【发布时间】:2017-10-27 07:43:03
【问题描述】:
一点背景资料:
我有一个存储过程,我们称之为 SP1。 SP1 调用另一个存储过程:SP2。 SP2 调用另一个存储过程:SP3。
现在,第一个存储过程 (SP1) 返回一个结果集。结果集是 SP2 的参数,这是通过光标完成的。
由于这些嵌套的插入和执行,我必须使用 openrowset 动态 SQL 字符串来执行我的存储过程。
这是我的查询:
DECLARE @P_Source varchar(255) = 'test'
DECLARE @P_Location varchar(255) = 'test'
DECLARE @sql varchar(max)
SET @sql = 'INSERT INTO #tmp
SELECT *
FROM OPENROWSET (
''SQLOLEDB'',
''Server=(local);TRUSTED_CONNECTION=YES;'',
''set fmtonly off
EXECUTE dbo.SP1
@P_Source = '''''+@P_Source+'''''''
,@P_Location = '''''+@P_Location+'''''''
)'
exec(@sql)
(我当然创建了表#tmp)。我有更多参数要准确(12),都是varchar,但我把它们排除在外,以免弄乱。
我收到以下错误
Msg 102, Level 15, State 1, Line 12
Incorrect syntax near ','.
我是否以正确的方式使用带有相应过程参数的 openrowset 命令?
【问题讨论】:
-
为什么不使用 OUTPUT 参数呢?
标签: sql sql-server stored-procedures openrowset