Creare una Stored Procedure da VB2005

mercoledì 25 luglio 2007 - 17.48

erongis Profilo | Junior Member

Salve a tutti, ho un problemino. Vorrei salvre dei dati in una db SQL2005 tramite stored procedures direttamente da VB2005.

Io ho creato un oggetto sqlclient.sqlcommand e gli passo questi parametri:

dim cmT as new sqlclient.sqlcommand(connessione)

cmT.CommandType = CommandType.Text
cmT.CommandText = "CREATE PROCEDURE InsertFatture @AnnoRegistrazione Int AS SELECT @numreg = COALESCE(MAX(numreg),0) + 1 FROM Fatture INSERT INTO Fatture ( Codice, Cliente, AnnoReg, DataReg, NumReg, NumCasse, Importo, Sconto, ImportoScontato, Iva, TotalePiuIva, UTcod) VALUES (@Codice, @Cliente, @AnnoReg, @DataReg, @numreg, @NumCasse, @Importo, @Sconto, @ImportoScontato, @Iva, @TotalePiuIva, @UTcod) EXECUTE InsertFatture 2007 SELECT * FROM Fatture"

Poi gli passo tutti i parametri:
cmT.Parameters.AddWithValue("codice","0700001")
cmT.Parameters.AddWithValue...... (tutti i parametri rimanenti...)

Ma mi viene restituito l'errore:
"Sintassi non corretta in prossimità della parola chiave 'PROCEDURE'."

AIUTOOOOO!!!

lbenaglia Profilo | Guru

>Io ho creato un oggetto sqlclient.sqlcommand e gli passo questi
>parametri:
>
>dim cmT as new sqlclient.sqlcommand(connessione)
>
> cmT.CommandType = CommandType.Text
>cmT.CommandText = "CREATE PROCEDURE InsertFatture @AnnoRegistrazione
>Int AS SELECT @numreg = COALESCE(MAX(numreg),0) + 1 FROM Fatture
>INSERT INTO Fatture ( Codice, Cliente, AnnoReg, DataReg, NumReg,
>NumCasse, Importo, Sconto, ImportoScontato, Iva, TotalePiuIva,
>UTcod) VALUES (@Codice, @Cliente, @AnnoReg, @DataReg, @numreg,
>@NumCasse, @Importo, @Sconto, @ImportoScontato, @Iva, @TotalePiuIva,
>@UTcod) EXECUTE InsertFatture 2007 SELECT * FROM Fatture"

Ciao erongis,

La stored procedure va definita una tantum nel database, dopo di che puoi richiamarla tutte le volte che vuoi specificando parametri diversi.
Per definirla puoi usare SQL Server Management Studio Express (SSMSE), connetterti all'istanza con una login avente i diritti necessari (dbo va benissimo), copiare il tuo codice di CREATE PROCEDURE ed eseguirlo.

> SELECT @numreg = COALESCE(MAX(numreg),0) + 1 FROM Fatture
Non ti conviene utilizzare una colonna IDENTITY invece che eseguire una query del genere?

> EXECUTE InsertFatture 2007 SELECT * FROM Fatture
Questo comando non l'ho capito (e comunque è sbagliato)

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5