2012-08-30 31 views
3

我試圖在SQL Server 2012中使用傳遞查詢來創建存儲過程,使用MS Access 2010中訪問SQL傳遞查詢(創建SP)錯誤

IF NOT EXISTS (SELECT * FROM sys.schemas WHERE name = N'SCHtest') 
EXECUTE sp_executesql N'create schema SCHtest' 
GO 
CREATE PROCEDURE [SCHtest].[SQLLrtest_2] 
AS 
BEGIN 
INSERT INTO [dbo].[UploadTest] (.....) 

在訪問我得到這個錯誤:

Run time error '3146': 
[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax nera 'GO'. (#102) 
[Microsoft][ODBC SQL Server Driver][SQL Server]'CREATE/ALTER PROCEDURE' must be 
the first statement in a query batch. (#111) 

如果我將代碼複製粘貼到SQL Server - 一切正常!

由於在錯誤中寫入,如果我刪除IF語句和GO,在Access和SQL中都起作用。如何在不刪除IF語句的情況下工作?

任何幫助,高度讚賞!

Edgaras

+3

'它不是一個T-SQL命令GO'僅是管理工作室, (http://stackoverflow.com/questions/2668529/t-sql-go-statement)所以刪除它,那麼當你嘗試創建sp時,你會得到另一個錯誤,請看這裏http://stackoverflow.com/questions/55506/how-do-i-conditionally-create-a-stored-procedure-in-sql-server –

+0

@亞歷克斯:這應該是答案:)作爲一個方面的說明,您的個人資料網站(endjinn.com)給出了一個虛擬目錄列表被拒絕的結果。 – mellamokb

回答

1

GO不是TSQL語句是SSMS的命令。只要您從MSAccess執行查詢,就不能使用GO

因此,唯一的選擇是拆分查詢並分別執行它們。
EDITED當然,不是唯一的選擇,請參閱Remou的答案。

此外,我不認爲這是通過MSAccess創建過程的好主意。至少它不方便。也許,你最好問如何解決你的原始問題,這迫使你通過MSAccess創建程序?

希望這會有所幫助。

+0

哇! Stackoverflow非常棒! – edgarasb

+0

好的,所以我有一個任務在SQL Server中進行一些計算,並且還可以創建一個接口,在這個接口中,一個人可以輸入一些公式,通過這些公式進行這些計算(早些時候,一切都在Access中)。因此,由於SQL沒有任何形式(正確?),我將Access與SQL鏈接到一個表單中,在該表單中,我將傳遞查詢發送到SQL,以便爲每個公式創建一個存儲過程(這也應該在幾個組 - 這就是爲什麼我需要這個模式)。非常感謝!!! – edgarasb

+0

@edgarasb您可以使用您的方法,但我不明白您將如何存儲過程名稱以供重用,以及爲何無法使用此公式存儲查詢。雖然我沒有'兩年訪問工作。很高興我們可以幫助你。 –