Sei sulla pagina 1di 6

SQL

Rimpiazzare un testo in una colonna


UPDATE WW_MANHOLE_TBL
SET label_text = REPLACE(label_text, '%%C', 'Ø ');
--> Prima dici quale tabella deve essere modificata, poi la colonna, poi scrivi il testo presente in quel
momento e il nuovo testo che desideri

Inserire valore in una colonna di un progetto

UPDATE CIM_BRIONE_SM.TOMBA_LOCULO_OSSARIO SET ID_MATERIALE = 1

Fare in modo che prenda il valore maiuscolo della lettera se un attributo e composto da numeri e
lettere. Per position finder progetto CRMM

SELECT geom FROM CRMM.IC_MANUFATTI WHERE lower(NUMERO)='{0}'

Rimpiazza una stringa con un'altra in una colonna di una tabella


UPDATE tb_feature_document
SET FILENAME = REPLACE(FILENAME, '\\192.168.2.50\', '\\62.202.2.35\')

Garantisce il privilegio del select su tutte le tabelle di uno schema (per ic position finder)
GRANT SELECT ANY TABLE TO "MGTK_CRMM";

Creare un campo bloccato in map administrator con SQL di sola lettura nella modalita modifica di una
maschera (ctrl+F)

Creare e dare il seguente comando sql per riferirsi al campo originale


Nel caso di un campo data: SELECT TO_CHAR (DATA_REGISTRAZIONE, ‘dd.mm.yyyy hh:mm’) FROM
DEFUNTO WHERE FID ={FID}
Nel caso di un campo numero: SELECT ID_TOMBA_LOCULO_OSSARIO FROM
TOMBA_LOCULO_OSSARIO WHERE FID = {FID}
Creare dei comandi delete per cancellare le relazioni tra le maschere prima controllare i Dialog_id
nella tabella TB_GN_DIALOG e dopo in base all id che si inseriranno nel seguente comando sql
eseguire:
SELECT 'delete from ' || table_name || ' where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;' FROM all_tables WHERE table_name LIKE 'TB_GN_%';
Eseguendo questo si hanno i seguenti comandi
delete from TB_GN_CONTROL where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id = 38;
delete from TB_GN_DIALOG where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id = 38;
delete from TB_GN_DIALOG_BAR where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id =
38;
delete from TB_GN_DIALOG_BAR_FILTER where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;
delete from TB_GN_DIALOG_BAR_ITEM where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;
delete from TB_GN_DIALOG_DETAIL where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id
= 38;
delete from TB_GN_DIALOG_FILTER where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id
= 38;
delete from TB_GN_DIALOG_HIGHLIGHT where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;
delete from TB_GN_DIALOG_MACHINE_USER where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;
delete from TB_GN_DIALOG_PROJECTION where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;
delete from TB_GN_DIALOG_SCRIPTCODE where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;
delete from TB_GN_DIALOG_USER where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id =
38;
delete from TB_GN_DIRECTORY_ALIAS where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;
delete from TB_GN_DOCUMENT_BAR where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;
delete from TB_GN_DOCUMENT_BAR_FILTER where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;
delete from TB_GN_DOCUMENT_BAR_ITEM where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;
delete from TB_GN_DOCUMENT_KEY where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id
= 38;
delete from TB_GN_FLYIN where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id = 38;
delete from TB_GN_FLYIN_FILTER where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id =
38;
delete from TB_GN_FLYIN_USER where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id =
38;
delete from TB_GN_INFO_REDIRECT where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id
= 38;
delete from TB_GN_LIST_CONFIG where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id =
38;
delete from TB_GN_MENU_FILTER where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id =
38;
delete from TB_GN_MENU_ITEM where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id =
38;
delete from TB_GN_MENU_NODE_FILTER where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;
delete from TB_GN_REPORT where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id = 38;
delete from TB_GN_REPORT_FILTER where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id
= 38;
delete from TB_GN_SELECTION where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or dialog_id = 38;
delete from TB_GN_USERGROUP_DIALOG where dialog_id = 5 or dialog_id = 6 or dialog_id = 37 or
dialog_id = 38;

Eseguire i delete from e fare il commit tornare in map administrator e ricreare le relazoni tra le tabelle
nelle maschere.

Inner join con un select da una colonna della tabella defunto prendendo i Fid delle tombe occupate
senza ripetizioni (distinct) e poi un update della colonna occupazione con il valore 1 dove il join da il
numero di fid di tomba_loculo_ossario = id_tomba_loculo_ossario di defunto.
UPDATE TOMBA_LOCULO_OSSARIO t
SET t.OCCUPAZIONE = 1
WHERE EXISTS
(SELECT DISTINCT ID_TOMBA_LOCULO_OSSARIO
FROM DEFUNTO b
INNER JOIN TOMBA_LOCULO_OSSARIO e ON e.FID = b.ID_TOMBA_LOCULO_OSSARIO
WHERE t.FID = b.ID_TOMBA_LOCULO_OSSARIO

Query spaziali

- Calcolo area selezionando fid con fid conosciuto


select c.fid, sdo_geom.sdo_area(geom, 0.005) from elemento_poligono c where fid = 10005;
)
- Selezione solo dei multipoligoni (a.geom.SDO_GTYPE = 2007)
select a.geom.SDO_GTYPE, a.fid from elemento_poligono a where a.geom.SDO_GTYPE = 2007

- Funzione spaziale extract estrazione di geometria poligono (2003) da geometria multipoligono


select SDO_UTIL.EXTRACT(c.geom, 1, 0) from zona_sovrapposta_pr c where c.fid = 683;

1 = selezione consecutiva (1,…,n) degli elementi geometrici del multipoligono


2 = selezione consecutiva (1,..,n) dei sottoelementi dei poligoni (geoemtrie con buchi) se è 0 vengono
presi tutti.

- Inserimento delle geometrie estratte con SDO_UTIL.EXTRACT


(http://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_util.htm#SPATL1228)
insert into zona_sovrapposta_pr (FID, AREA, GEOM, codice_zona, cod_piano, data_approvazione, riscds,
zona) values (2047, sdo_geom.sdo_area((select SDO_UTIL.EXTRACT(c.geom, 3, 0) from
zona_sovrapposta_pr c where c.fid = 1044), 0.005), (select SDO_UTIL.EXTRACT(c.geom, 3, 0) from
zona_sovrapposta_pr c where c.fid = 1044), 2102, 'PPart2', '09.03.04', 945, 'Comparti con valenza
agricola componenti la zona di protezoine della natura e del paesaggio ZPNP - A2');

- Calcolare lunghezza linea con un for loop

DECLARE
CURSOR c1 IS
SELECT fid FROM tracciato
ORDER BY fid;
BEGIN
FOR item IN c1
LOOP
update tracciato
set length = sdo_geom.sdo_length((select c.geom from tracciato c where c.fid = item.fid), 2002)
where fid = item.fid;
END LOOP;
END;
/

Rimpiazzare parte di una stringa


UPDATE ispezioni SET isp_foto2 = replace(isp_foto2, '//192.168.2.89', 'http://62.202.2.35');

Impostare campo obbligatorio


ALTER TABLE ordinanza MODIFY (data_ordinanza NOT NULL);

Vincoli di integrità referenziale


Il primo esempio lega la tabella ic_boe alla tabella di dominio ic_cat_rilievi_tipi.
Se una voce di dominio in ic_cat_rilievi_tipi è usata in ic_boe allora l’eventuale eliminazione viene bloccata.

alter table ic_boe


add constraint fk_boe_2 foreign key (codice_rilievo)
references ic_cat_rilievi_tipi (codice)
;

Qui invece c’è un’eliminazione a cascata. Se si elimina un record in ic_cat_abusi_desc allora tutti i record in
ic_fondi_abusi_desc che fanno riferimento al record in eliminazione verranno eliminati automaticamente a
loro volta.

alter table ic_fondi_abusi_desc


add constraint fk_fondi_abusi_desc_2 foreign key (codice_desc)
references ic_cat_abusi_desc (codice) on delete cascade
;

Aumentare tablespace per oracle xe

ALTER DATABASE DATAFILE 'C:\ORACLEXE\APP\ORACLE\ORADATA\XE\SYSTEM.DBF' resize 1000M;

cambiare path file .ora in base a quello da aumentare

crea multipoligono e calcola area

update lm_ad_lot set geom = (SELECT SDO_AGGR_UNION(MDSYS.SDOAGGRTYPE(c.geom, 0.005))


FROM lm_ad_lot c
WHERE c.t2t_fid = 2)
where fid = 189175;

update lm_ad_lot
set area = sdo_geom.sdo_area(geom, 0.005)
where fid = 189175

Selezione spaziale tra due geometrie

SELECT distinct(a.FID_SO_SINGLE_OBJECT)
FROM LM_SO_point_element a, LM_AD_LOT B
WHERE B.FID = 293401
AND SDO_RELATE(A.GEOM, B.GEOM,'mask=inside') = 'TRUE';

Operatori spaziali

The mask keyword specifies the topological relationship of interest. This is a required parameter. Valid
mask keyword values are one or more of the following in the nine-intersection pattern: TOUCH,
OVERLAPBDYDISJOINT, OVERLAPBDYINTERSECT, EQUAL, INSIDE, COVEREDBY, CONTAINS, COVERS,
ANYINTERACT, ON. Multiple masks are combined with the logical Boolean operator OR, for example,
'mask=inside+touch'; however, see the Usage Notes for an alternative syntax using UNION ALL that
may result in better performance. See Section 1.8 for an explanation of the nine-intersection relationship
pattern.

Inserie una data


update plt_plot set date_updated = TO_DATE('28/02/2015 21:02:44', 'dd/mm/yyyy
hh24:mi:ss') where FID_AD_MUNICIPALITY = 176520;

Trovare elemento + anello di una geometria oracle


Quando mi viene dato un errore oracle 13367, 13349 o 13356 con il seguente comando posso individuare il
sottoelemento di un record.

SELECT c.FID, SDO_UTIL.EXTRACT(c.GEOM, 1,5) FROM LM_IS_ESTATE_SURFACE c WHERE c.FID = 34567;

Dove:
1 = elemento geometrico
2 = anello geometrico

Correzioni errori

update ic_all_coperture a set a.GEOM=sdo_util.rectify_geometry(a.GEOM,0.0005) where


substr(sdo_geom.validate_geometry_with_context(a.GEOM,0.0005),1,5) in ('13356');

in base all’errore 13349, 13356 o 13367

Ricerca area TSUR tramite join sulla tabella centroidi beni immobili
select a.fid, c.area_nominal from lm_ow_real_estate a, lm_real_estate_tcen
b,lm_real_estate_tsur c, lm_ow_property d where a.fid = b.fid_centroid and
c.fid = b.fid_tsur and a.fid_ow_property = d.fid and d.property_number >3000
order by a.fid;
Trova volori doppi
select job_number, count(*)
from jobs
group by job_number
having count(*) > 1;

Ordinare numeri con format non numeric


ORDER_BY cast(registration_no as int) ASC

SELECT HE.FID, HE.HOUSE_NUMBER FROM MU_BRISSAGO.LM_V_ANDR_INDI_ENTR HE WHERE


HE.FID_LO_LOCATION = {0} ORDER BY REGEXP_SUBSTR(HE.HOUSE_NUMBER, '^\D*') NULLS
FIRST, TO_NUMBER(REGEXP_SUBSTR(HE.HOUSE_NUMBER, '\d+'))

Aggiungi Primary key a una vista


alter view LM_V_ANDR_INDI_ENTR add constraint LM_V_ANDR_INDI_ENTR_P primary key (FID) RELY
DISABLE;

Potrebbero piacerti anche