[Gfoss] stored procedure e messaggio finale NULL

Buonasera a tuttə,
ho studiato le stored procedure di spatialite 5 [0] e ho un problema che
non riesco a risolvere da solo.

Lavoro con spatialite_gui 2.1.0 beta1 con spatialite 5.0.0 e sqlite 3.33.0

Ho creato un mio database usando la gui e importato una sola tabella
(vettore MultiLineString 32632),
su questa tabella faccio una serie di query, circa 53, tutte a cascata.

Ho usato le stored procedure, ovvero ho sostituito al posto del nome della
tabella (es:pippo) la variabile @toto@ e ho salvato l'intero script SQL in
un file, es: my_script_sql.sql

da spatialite_gui lancio la seguente query:

SELECT SqlProc_SetLogfile(
'C:\Users\pigre\Desktop\db_prova_route\logfile.txt', 1);
SELECT
SqlProc_Execute(SqlProc_FromFile('D:\Gitlab\civ_xxxxx_of\ my_script_sql.sql
'),'@toto@=pippo');

tutto procede bene, ma alla fine ottengo:

SqlProc_Execute(SqlProc_FromFile('D:\Gitlab\civ_xxxxx_of\ my_script_sql.sql
'),'@toto@=pippo')
--------
NULL

ma ottengo l'output corretto, cosa significa questo NULL? devo preoccuparmi?

allego il logfile.txt

[0] SpatiaLite: Stored Procedures

--
*Ing. Salvatore Fiandaca*
*mobile*.:+39 327.493.8955
*m*: *pigrecoinfinito@gmail.com <pigrecoinfinito@gmail.com>*
*C.F*.: FNDSVT71E29Z103G
*P.IVA*: 06597870820
*membro QGIS Italia - http://qgis.it/*
*socio GFOSS.it - *http://gfoss.it/
*blog:*
* https://pigrecoinfinito.com/ FB: Co-admin
- QGIS Italia**
<https://www.facebook.com/qgis.it/&gt; *
*TW: <http://goog_95411464>**https://twitter.com/totofiandaca
<https://twitter.com/totofiandaca&gt;\*

43°51'0.54"N 10°34'27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di
FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario
in relazione alle finalità per le quali è stato ricevuto. E' vietata
qualsiasi forma di riproduzione o divulgazione senza l'esplicito consenso
di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di
informare tempestivamente il mittente e distruggere la copia in proprio
possesso.

logfile.txt (13.5 KB)

On Fri, 11 Jun 2021 15:40:18 +0200, Totò Fiandaca wrote:

Buonasera a tuttə,
ho studiato le stored procedure di spatialite 5 [0] e ho un problema che
non riesco a risolvere da solo.

Lavoro con spatialite_gui 2.1.0 beta1 con spatialite 5.0.0 e sqlite 3.33.0

Ho creato un mio database usando la gui e importato una sola tabella
(vettore MultiLineString 32632),
su questa tabella faccio una serie di query, circa 53, tutte a cascata.

Ho usato le stored procedure, ovvero ho sostituito al posto del nome della
tabella (es:pippo) la variabile @toto@ e ho salvato l'intero script SQL in
un file, es: my_script_sql.sql

da spatialite_gui lancio la seguente query:

SELECT SqlProc_SetLogfile(
'C:\Users\pigre\Desktop\db_prova_route\logfile.txt', 1);
SELECT
SqlProc_Execute(SqlProc_FromFile('D:\Gitlab\civ_xxxxx_of\ my_script_sql.sql
'),'@toto@=pippo');

tutto procede bene, ma alla fine ottengo:

SqlProc_Execute(SqlProc_FromFile('D:\Gitlab\civ_xxxxx_of\ my_script_sql.sql
'),'@toto@=pippo')
--------
NULL

ma ottengo l'output corretto, cosa significa questo NULL? devo preoccuparmi?

Toto',

almeno in teoria quando uno sviluppatore decide di perdere
qualche giornata per tenere aggiornata la documentazione
tecnica lo fa proprio con l'intenzione di chiarire dubbi
come questo :smiley:

http://www.gaia-gis.it/gaia-sins/spatialite-sql-5.0.1.html

ecco cosa dice per la funzione SqlProc_Execute()

"On success will return the Return Value defined
(explicitly or implicitly) by SqlProc_Return()."

a sua volta la SqlProc_Return() riporta:

"Any SQL Body terminating without explicitly
calling SqlProc_Return() or StoredProc_Return()
will always behave as if SqlProc_Return(NULL)
was implicitly called."

conclusione: nel tuo SQL script non viene mai
chiamata nessuna SqlProc_Return(); e di conseguenza
esce con il valore impostato by default che e' NULL

insomma, e' tutto assulutamente regolare, fa
esattamente quel che ci si aspetta che faccia. :smiley:

ciao Sandro

Grazie mille per la rapida risposta.
Quindi non mi preoccupo.

Nuovamente grazie,
ma le stored procedure sono solo in spatialite o anche in sqlite?

saluti

Il giorno ven 11 giu 2021 alle ore 15:54 <a.furieri@lqt.it> ha scritto:

On Fri, 11 Jun 2021 15:40:18 +0200, Totò Fiandaca wrote:
> Buonasera a tuttə,
> ho studiato le stored procedure di spatialite 5 [0] e ho un problema
> che
> non riesco a risolvere da solo.
>
> Lavoro con spatialite_gui 2.1.0 beta1 con spatialite 5.0.0 e sqlite
> 3.33.0
>
> Ho creato un mio database usando la gui e importato una sola tabella
> (vettore MultiLineString 32632),
> su questa tabella faccio una serie di query, circa 53, tutte a
> cascata.
>
> Ho usato le stored procedure, ovvero ho sostituito al posto del nome
> della
> tabella (es:pippo) la variabile @toto@ e ho salvato l'intero script
> SQL in
> un file, es: my_script_sql.sql
>
> da spatialite_gui lancio la seguente query:
>
> SELECT SqlProc_SetLogfile(
> 'C:\Users\pigre\Desktop\db_prova_route\logfile.txt', 1);
> SELECT
> SqlProc_Execute(SqlProc_FromFile('D:\Gitlab\civ_xxxxx_of\
> my_script_sql.sql
> '),'@toto@=pippo');
>
> tutto procede bene, ma alla fine ottengo:
>
> SqlProc_Execute(SqlProc_FromFile('D:\Gitlab\civ_xxxxx_of\
> my_script_sql.sql
> '),'@toto@=pippo')
> --------
> NULL
>
> ma ottengo l'output corretto, cosa significa questo NULL? devo
> preoccuparmi?
>

Toto',

almeno in teoria quando uno sviluppatore decide di perdere
qualche giornata per tenere aggiornata la documentazione
tecnica lo fa proprio con l'intenzione di chiarire dubbi
come questo :smiley:

http://www.gaia-gis.it/gaia-sins/spatialite-sql-5.0.1.html

ecco cosa dice per la funzione SqlProc_Execute()

"On success will return the Return Value defined
(explicitly or implicitly) by SqlProc_Return()."

a sua volta la SqlProc_Return() riporta:

"Any SQL Body terminating without explicitly
calling SqlProc_Return() or StoredProc_Return()
will always behave as if SqlProc_Return(NULL)
was implicitly called."

conclusione: nel tuo SQL script non viene mai
chiamata nessuna SqlProc_Return(); e di conseguenza
esce con il valore impostato by default che e' NULL

insomma, e' tutto assulutamente regolare, fa
esattamente quel che ci si aspetta che faccia. :smiley:

ciao Sandro
_______________________________________________
Gfoss@lists.gfoss.it
http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
Questa e' una lista di discussione pubblica aperta a tutti.
I messaggi di questa lista non hanno relazione diretta con le posizioni
dell'Associazione GFOSS.it.
764 iscritti al 23/08/2019

--
*Ing. Salvatore Fiandaca*
*mobile*.:+39 327.493.8955
*m*: *pigrecoinfinito@gmail.com <pigrecoinfinito@gmail.com>*
*C.F*.: FNDSVT71E29Z103G
*P.IVA*: 06597870820
*membro QGIS Italia - http://qgis.it/*
*socio GFOSS.it - *http://gfoss.it/
*blog:*
* https://pigrecoinfinito.com/ FB: Co-admin
- https://www.facebook.com/qgis.it/**
<https://www.facebook.com/qgis.it/&gt; *
*TW: <http://goog_95411464>**https://twitter.com/totofiandaca
<https://twitter.com/totofiandaca&gt;\*

43°51'0.54"N 10°34'27.62"E - EPSG:4326

“Se la conoscenza deve essere aperta a tutti,
perchè mai limitarne l’accesso?”
R. Stallman

Questo documento, allegati inclusi, contiene informazioni di proprietà di
FIANDACA SALVATORE e deve essere utilizzato esclusivamente dal destinatario
in relazione alle finalità per le quali è stato ricevuto. E' vietata
qualsiasi forma di riproduzione o divulgazione senza l'esplicito consenso
di FIANDACA SALVATORE. Qualora fosse stato ricevuto per errore si prega di
informare tempestivamente il mittente e distruggere la copia in proprio
possesso.

On Fri, 11 Jun 2021 16:20:24 +0200, Totò Fiandaca wrote:

Grazie mille per la rapida risposta.
Quindi non mi preoccupo.

Nuovamente grazie,
ma le stored procedure sono solo in spatialite o anche in sqlite?

sono un'estensione a SQLite implementata da libspatialite.

SQLite ha una bella architettura spartanamente rudimentale
in cui c'e' solo lo stretto indispensabile.

ma e' molto facile sfruttare la sua struttura modulare
aperta e flessibile per aggiungere un sacco di ulteriori
funzionalita' piu' sofisticate ... che e' esattamente
quel che fa SpatiaLite.

ciao Sandro