我正在尝试使用 MS Access 2010 在 SQL Server 2012 中使用直通查询创建存储过程。
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] (.....)
在 Access 中我得到这个错误:
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 语句的情况下使其工作?
非常感谢任何帮助!
埃德加拉斯
最佳答案
如何设置这样的东西:
IF NOT EXISTS (SELECT *
FROM sys.schemas
WHERE name = N'testx')
EXECUTE Sp_executesql
N'create schema testx'
DECLARE @sql VARCHAR(max)
SELECT @sql = '
CREATE PROCEDURE testx
AS
INSERT INTO [dbo].[table_1] (atext) values (''abc'') '
EXEC (@sql)
EXEC Testx
引用:http://ask.sqlservercentral.com/questions/4420/alternative-to-go-for-batching-sql-statements.html
在 MS Access 2010 中测试
关于sql-server - access-SQL 传递查询(创建 SP)错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12197870/