SQLStored




i% = MyDb.ExecuteSQL("StoredProc")
'Il codice qui sopra esegue la procedura StoreProc (per esempio una query

'SQL che restituisce il numero dei record nel DB), la quale restituisce il

'valore nella variabile i%. Il metodo ExecuteSQL e' utile nell'esecuzione

'delle cosiddette 'action query' ovvero query SQL che manipolano i dati

'presenti nelle tabelle, ad esempio: Delete Authors where name like "fred%"

'Il metodo ExecuteSQL() e' valido solo per query SQL che non restituiscono

'record. Uno statement SQL che utilizza "SELECT..." restituisce dei records,

'mentre uno statement SQL che utilizza "DELETE..." non restituisce records.

'Query che restituiscono records, richiedo un Dynaset o uno SnapShot per

'ottenere i dati. Ecco due esempi:

'Esempio utilizzando un DataControl:

Data1.Options = dbSQLPassThrough
Data1.Recordsource = "StoreProc"
'il nome della procedura memorizzata da richiamare.

Data1.Refresh
'Quando si usa la costante SqlPassThrough, il motore di Microsoft Access

'ignora la sintassi utilizzata e passa il comando al server SQL.

'Esempio utilizzando gli oggetti di accesso ai dati:

Dim Ds as Recordset
' Aprire il database voluto...

Set MyDB = DBEngine.Workspaces(0).OpenDatabase(TheDataBase)
Set Ds = MyDB.OpenRecordset("StoreProc", dbOpenDynaset, _
dbSQLPassThrough)
'Se la query memorizzata richiede dei parametri, basta includere gli

'stessi dopo il nome della procedura da richiamare, ad esempio:

' Specifica la stringa SQL.

command.SQLx = "StoreProc parm1, parm2, parm3"
' nel caso in cui la procedura non restituisce record...

i = MyDB.ExecuteSQL(SQLx)
'...nel caso in cui la procedura restituisce record

set Ds = MyDB.OpenRecordset(SQLx, dbOpenDynaset, dbSQLPassThrough)
'La variabile oggetto (Ds) contiene il primo set di risultati ottenuti

'dalla stored procedure (StoreProc).

'Le seguenti righe mostrano alcuni usi di entrambi i metodi

Dim db as Database
Dim x as Long
Dim Ss as Recordset
Set Db = DBEngine.Workspaces(0).OpenDatabase _
("", False, False, "ODBC;dsn=yourdsn;uid=youruid;pwd=yourpwd:")
' Per le stored procedure che non restituiscono record.

x=Db.ExecuteSQL("StoredProc_Name")
' Per le stored procedure che restituiscono record.

Set Ss = Db.OpenRecordset("StoredProc_Name", dbOpenSnapshot, _
dbSQLPassThrough)
Il metodo per chiamare una procedura SQL memorizzata in un DB
dipende se la procedura restituisce dei record o no. Per esempio:
Procedure che non restituiscono record possono essere eseguite con
il metodo ExecuteSQL() nel seguente modo










( sqlstored.html )- by Paolo Puglisi - Modifica del 17/12/2023