2014-06-27 42 views
1

所以,我是MS SQL新手(過去5 - 7年一直使用oracle),這應該是非常直截了當的事情,所以我認爲我錯過了一些非常簡單的事情。 (我試過以下例子:http://technet.microsoft.com/en-us/library/ms190669(v=SQL.105).aspx獲取錯誤執行存儲過程時,關鍵字'BEGIN'附近的語法不正確

所以,我創建了下面的存儲過程來查詢表(這是一個非常簡單和毫無意義的過程,但我不能繼續我的更復雜的過程,直到我解決此問題)

create procedure sp_getTransactions 
as 
select * from MyTransactions; 

我再嘗試執行此過程

execute dbo.sp_getTransactions 

(我沒有嘗試過DBO,並得到了同樣的錯誤)

這給了我非常有幫助的錯誤 關鍵字'BEGIN'附近的語法不正確。

現在,也許我瘋了,但我沒有看到我的程序中的任何地方的開始語句(我試過添加一個無效)。

任何人都可以給我一些指點嗎? 感謝

+0

發佈您的查詢... – Jesuraja

+1

這不會解決您的問題,但您應該注意 - ['CREATE PROCEDURE']( http://msdn.microsoft.com/en-gb/library/ms187926.aspx):「避免在命名過程中使用** sp _ **前綴,該前綴由SQL Server用於指定系統過程。如果存在具有相同名稱的系統過程,前綴可能會導致應用程序代碼中斷。「 –

+0

您是否正在同時創建和執行?如果是這樣,則需要在創建(或執行之前)存儲過程後添加'GO'(批處理命令結束)。 – Kaf

回答

6

事實上,問題原因在於我使用的客戶端。我正在使用Oracle的SQLDeveloper和MSSQL jTDS驅動程序執行sql腳本。看起來這個驅動程序大部分工作正常,但是當運行存儲過程時會出現一個錯誤。 我猜執行語句在插入服務器時未被插件正確解析

0

檢查這樣的:

CREATE PROCEDURE sp_getTransactions 
AS 
BEGIN 
    SELECT * FROM MyTransactions; 
END 

execute dbo.sp__getTransactions語句中,使用2 _,但在CREATE PROCEDURE語句它只有一個。更改爲dbo.sp_getTransactions並嘗試執行。

+0

沒有。同樣的問題 執行語句中的2 _是上面的錯字。 –

+0

請檢查更新後的一個 – Jesuraja

+0

仍然是同樣的問題 –

相關問題