2010-11-09 1 views
116

Sono stato assegnato un account utente a un database SQL Server che dispone solo dei privilegi per l'esecuzione di una stored procedure. Ho aggiunto il file jar JDBC di SQL Server JTDS a SQL Developer e l'ho aggiunto come driver JDBC di terze parti. Posso accedere correttamente al database di SQL Server. Mi è stata data questa sintassi per l'esecuzione della procedura:Come eseguire la stored procedure di SQL Server in SQL Developer?

EXEC proc_name 'paramValue1' 'paramValue2' 

Quando ho eseguito questo sia come una dichiarazione o di uno script, ottengo questo errore:

Error starting at line 1 in command: 
EXEC proc_name 'paramValue1' 'paramValue2' 
Error report: 
Incorrect syntax near the keyword 'BEGIN'. 

ho provato avvolgendo la dichiarazione in BEGIN/END, ma ottieni lo stesso errore È possibile chiamare la procedura da SQL Developer? In tal caso, quale sintassi devo usare?

risposta

187

Non è necessario clausola EXEC. Basta usare

proc_name paramValue1, paramValue2 

(ed hai bisogno di virgole come menzionato termine improprio)

+7

Esistono eccezioni a questa regola?Mi sembra di ricevere l'errore "Sintassi errata vicino a sp_dev_mystoredproc". " quando si esegue con questa sintassi. – Nuzzolilo

+0

EXEC nome_precedente è necessario nel mio caso –

+2

@Nuzzolilo https://stackoverflow.com/a/37334739/1304456 – MuriloKunze

57

Ti manca ,

EXEC proc_name 'paramValue1','paramValue2' 
+1

Ho aggiunto la virgola mancante, ma ancora, ottengo lo stesso errore. – sdoca

+0

Quali sono i tuoi parametri se sono varchar allora solo hai bisogno delle virgolette ... a parte quello non riesci a pensare a niente ... potresti provare questo, esegui solo questo in una nuova finestra- 'EXEC proc_name' e vedi se ti chiede il secondo parametro ... allora almeno sai che la tua sintassi è giusta ... se non funziona significa che probabilmente non hai il nome di processo memorizzato correttamente ... prova con il nome completo .. – Vishal

+0

Ho rimosso il secondo parametro e ancora lo stesso errore. Non penso che sia in corso la procedura. Il comando EXEC non è evidenziato dalla sintassi, quindi suppongo che Developer non lo riconosca anche se la connessione è a un database di SQL Server. Ma non riesco a trovare nulla sul web per confermare/negarlo. – sdoca

-6

Le stored procedure possono essere eseguiti in strumento di sviluppo SQL utilizzando la sintassi di seguito

BEGIN ProcedureName(); END;

Se ci sono dei parametri, deve essere passato.

+0

Perché stai racchiudendo una singola istruzione da un blocco di istruzioni? Devi farlo solo per una [serie di istruzioni T-SQL] (https://msdn.microsoft.com/en-us/library/ms190487.aspx). –

15

Hai bisogno di fare questo:

exec procName 
    @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value', 
    @parameter_z_name = 'parameter_z_value' 
-9
Select * from Table name ..i.e(are you save table name in sql(TEST) k. 

Select * from TEST then you will execute your project. 
+1

Benvenuti in StackOverflow. Partecipa a questo tour (http://stackoverflow.com/tour) per scoprire come funziona questo sito e a cosa serve. Qual è la tua risposta? –

+2

LOL - chiedo come sia stata questa risposta prima della modifica. –

+0

@TobyHolland fai clic sul link "modificato" –

6
EXECUTE [or EXEC] procedure_name 
    @parameter_1_Name = 'parameter_1_Value', 
    @parameter_2_name = 'parameter_2_value', 
    @parameter_z_name = 'parameter_z_value' 
-2

se semplicemente bisogno di excute stored procedure proc_name 'paramValue1' , 'paramValue2'... allo stesso tempo si è excute più di una query come uno query di selezione e stored procedure è necessario aggiungere select * from tableName EXCE proc_name paramValue1 , paramValue2...

0
EXEC proc_name @paramValue1 = 0, @paramValue2 = 'some text'; 
GO 

Se l'obiettivo della Stored procedure è eseguire un INSERT su una tabella che ha dichiarato un campo Identità, il campo, in questo scenario @paramValue1, deve essere dichiarato e deve solo passare il valore 0, perché sarà l'incremento automatico.