Sql server access SQL传递查询(创建SP)错误

Sql server access SQL传递查询(创建SP)错误,sql-server,ms-access,vba,pass-through,Sql Server,Ms Access,Vba,Pass Through,我正在尝试使用SQLServer2012中的传递查询(pass-through query)和MS Access 2010创建一个存储过程 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 [

我正在尝试使用SQLServer2012中的传递查询(pass-through query)和MS Access 2010创建一个存储过程

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语句的情况下使其工作

非常感谢您的帮助

Edgaras不是TSQL语句,而是SSMS的命令。只要从MSAccess执行查询,就不能使用
GO

因此,您唯一的选择是拆分查询并分别执行它们
编辑事实上,并非唯一选项,请参见Remou的答案

另外,我认为通过MSAccess创建过程不是一个好主意。至少不方便。也许,您最好询问如何解决迫使您通过MSAccess创建过程的原始问题


希望这有帮助

这样设置怎么样:

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 
参考:


在MS Access 2010中测试

GO
仅适用于management studio,它不是一个t-sql命令(),因此请删除它,然后在尝试创建sp时会出现另一个错误,请参见此处@AlexK.:这应该是答案:)作为补充说明,您的个人资料网站(endjinn.com)给出了一个虚拟目录列表,结果被拒绝。确定,因此,我的任务是在SQL server中进行一些计算,并创建一个界面,在该界面中,用户可以输入一些公式来进行这些计算(之前,所有内容都在Access中)。因此,由于SQL没有任何表单(对吗?),我将Access与SQL链接到一个表单中,在该表单中,我向SQL发送一个传递查询,以便为每个公式创建一个存储过程(它也应该在多个组中-这就是我需要此模式的原因)。非常感谢你@edgarasb可以使用您的方法,尽管我不知道您将如何存储过程名称以供重用,以及为什么不能使用此公式存储查询。虽然我已经有两年没有使用access了。很高兴我们能帮助你。