2010-11-09 95 views
116

我已將用戶帳戶授予僅具有執行存儲過程權限的SQL Server數據庫。我將JTDS SQL Server JDBC jar文件添加到SQL Developer,並將其添加爲第三方JDBC驅動程序。我可以成功登錄到SQL Server數據庫。我得到這個語法運行的程序:如何在SQL Developer中執行SQL Server存儲過程?

EXEC proc_name 'paramValue1' 'paramValue2' 

當我運行這個無論是作爲語句或腳本,我得到這個錯誤:

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

我試着在BEGIN/END包裹的語句,但得到相同的錯誤。是否有可能從SQL Developer調用過程?如果是這樣,我需要使用什麼語法?

回答

187

你不需要EXEC子句。只需使用

proc_name paramValue1, paramValue2 

(你需要逗號作爲名不副實提到的)使用下面的語法

+7

這個規則是否有例外?我似乎遇到錯誤「附近的語法錯誤」sp_dev_mystoredproc「。」當用這個語法執行時。 – Nuzzolilo 2015-10-24 02:30:37

+0

在我的情況下需要EXEC優先proc_name – 2017-01-20 14:37:59

+2

@Nuzzolilo https://stackoverflow.com/a/37334739/1304456 – MuriloKunze 2017-07-13 19:39:48

57

你缺少,

EXEC proc_name 'paramValue1','paramValue2' 
+1

我添加了缺少的逗號,但仍然得到相同的錯誤。 – sdoca 2010-11-09 18:05:12

+0

什麼是你的參數,如果他們是varchar那麼只有你需要引號......除此之外,不能想到任何東西......你可以嘗試這只是在一個新的窗口中運行 - 「EXEC proc_name」,看看是否它要求你的第二個參數...然後至少你知道你的sytax是正確的..如果不工作意味着你probanly沒有正確存儲過程名稱...嘗試全限定名.. – Vishal 2010-11-09 18:14:13

+0

我刪除了第二個參數,仍然同樣的錯誤。我不認爲它運行的程序。 EXEC命令沒有語法突出顯示,所以我猜測即使連接到SQL Server數據庫,開發人員也不會識別它。但我無法在網上找到任何證據來證實/否認這一點。 – sdoca 2010-11-09 18:18:14

-6

的存儲過程可以在SQL Developer中的工具來運行BEGIN 過程名(); END;

如果有任何參數,那麼它必須通過。

+0

你爲什麼用一個語句塊包含單個語句?您必須僅爲[一系列T-SQL語句](https://msdn.microsoft.com/en-us/library/ms190487.aspx)執行此操作。 – 2015-11-10 15:36:04

15

你需要這樣做:

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

歡迎使用stackoverflow。參考[this](http://stackoverflow.com/tour)瞭解本網站的工作原理和用途。你的答案是什麼? – 2013-12-17 11:26:17

+2

大聲笑 - 不知道編輯前這個答案是什麼樣子。 – 2014-07-16 22:56:28

+0

@TobyHolland點擊'編輯鏈接' – 2015-02-23 11:02:44

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

,如果你只需要在同一時間你是EXCUTE到EXCUTE存儲過程 proc_name 'paramValue1' , 'paramValue2'... 更多然後像一個選擇查詢一個查詢和存儲過程您必須添加 select * from tableName EXCE proc_name paramValue1 , paramValue2...

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

如果Stored Procedure的目標是在聲明瞭Identity字段的表上執行INSERT,則應該聲明此場景@paramValue1中的字段,並僅傳遞值0,因爲它將自動遞增。

相關問題