PDA

View Full Version : [PL/SQL] Script check URL


pumapc
07-01-2015, 15:42
Ciao a tutti,
mi servirebbe un aiuto su un check che devo fare su dei dati inseriti in una tabella (DB Oracle) e credo che il modo più semplice è quello di fare uno script PL/SQL.

Ho una tabella con i seguenti campi:
URL
SITE_ID
CREATION_TIME
DELETED
LAST_MOD_TIME
DESCRIPTION
MAIL_FROM
TIMEZONE_ID

Il controllo che dovrei fare è praticamente il seguente:

Per ogni URL verificare che ci siano l'url http://nome_url e l'url https://nome_url; inoltre se c'è solo l'url https mi deve dare errore in caso contrario, se è presente solo l'url http è OK.

Successivamente se è presente la coppia degli url (http e https dello stesso nome_url) devo verificare che gli altri campi dei due record (dello stesso nome_url) siano uguali, in caso di qualche disallineamento devo estrarre quali URL sono disallineati.


Come potrei fare?


Io ho iniziato a creare questa bozza di PL-SQL ma mi estrae soltanto per ora gli url doppi, ma poi non riesco a fare gli altri check

SET SERVEROUTPUT ON;
DECLARE

CURSOR CSCHEMA IS
SELECT count(*) AS count_url, REPLACE(substr(URL, 8), '/', '') as url_name_complete, site_id
FROM table_url
group by REPLACE(substr(URL, 8), '/', ''), SITE_ID
order by 2;

RSCHEMA CSCHEMA%ROWTYPE;

BEGIN
SYS.DBMS_OUTPUT.PUT_LINE('START - CHECK URL');
OPEN CSCHEMA;
LOOP
FETCH CSCHEMA INTO RSCHEMA;
EXIT WHEN CSCHEMA%NOTFOUND;

IF (RSCHEMA.COUNT_URL = 2) THEN
SYS.DBMS_OUTPUT.PUT_LINE('URL: ' || RSCHEMA.url_name_complete );

END IF;


END LOOP;
CLOSE CSCHEMA;
SYS.DBMS_OUTPUT.PUT_LINE('END - CHECK URL');
END;
/


Grazie mille in anticipo.

pumapc
08-01-2015, 13:16
Non c'è nessuno che riuscirebbe a darmi una mano? :(

pumapc
28-01-2015, 10:54
C'è qualcuno che riesce ad aiutarmi..:(

Nello specifico sto cercando di capire perchè quando provo a fare l'EXECUTE IMMEDIATE per effettuare un controllo mi ritorna questo errore:

il pezzo di codice che mi sta creando è il seguente:

IF (RSCHEMA.COUNT_URL = 2) THEN
SYS.DBMS_OUTPUT.PUT_LINE('URL: ' || RSCHEMA.url_name_complete || ' - COUNT ' || RSCHEMA.COUNT_URL );
EXECUTE IMMEDIATE 'select count(*) from (select distinct REPLACE(substr(URL, 8), '/', '') as url_name_complete, SITE_ID, DELETED, DESCRIPTION, MAIL_FROM from table_url where REPLACE(substr(URL, 8), '/', '') = '|| RSCHEMA.url_name_complete || ')' into value_count;
SYS.DBMS_OUTPUT.PUT_LINE(value_count);

END IF;

La PUT_LINE prima dell'esecuzione dell'EXECUTE IMMEDIATE mi ritorna esattamente gli URL che voglio verificare ma poi l'istruzione successiva mi ritorna l'errore.:cry:

Errore:

Report error -
ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 29
06502. 00000 - "PL/SQL: numeric or value error%s"
*Cause:
*Action:

La variabile value_count ho provato a valorizzarla sia come number sia come varchar ma mi restituisce lo stesso errore.

C'è qualcuno che riesce a darmi qualche dritta????:help: :help: :help:

]Rik`[
28-01-2015, 13:47
fai prima a chiedere su stackoverflow credo... :D

pumapc
28-01-2015, 13:50
ok grazie...mi che allora mi iscriverò anche lì!! ;)