我试图将参数从一个存储过程传递到另一个存储过程,并试图弄清楚如何将其放入字符串中。
我尝试过的事情:
CREATE PROCEDURE proc1
(@ReportStartDate DATE)
AS
SELECT *
FROM table1
WHERE fielddate = @ReportStartDate
然后我尝试了
CREATE PROCEDURE proc2
(@ReportDate DATE)
AS
SELECT *
FROM openquery(local, 'exec dbname.dbo.proc1 @ReportStartDate="' + @ReportDate + '"')
但是我得到一个错误
“ +”附近的语法不正确
然后我尝试了
CREATE PROCEDURE proc2
(@ReportDate DATE,
@strSQL NVARCHAR(60))
AS
SET @ReportDate = (SELECT DATEADD(DAY, 7 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)))
SET @strSQL = 'exec dbname.dbo.proc1 @ReportStartDate="' + @ReportDate + '"'
SELECT *
FROM openquery(local, @strSQL)
并导致错误:
“ @ strSQL”附近的语法不正确
proc1允许我根据任何日期运行,但proc2允许我使用一周的最后一天以及其他一些东西。我没有包括“其他内容”,因为我试图弄清楚如何传递新参数。
答案 0 :(得分:0)
尝试在INSERT EXEC
中使用proc2
而不是OPENQUERY
;
CREATE proc2
(
@ReportDate DATE
)
AS
BEGIN
DECLARE @t TABLE (Col1 INT);
INSERT @t (Col1)
EXEC proc1 @ReportStartDate = @ReportDate;
SELECT Col1 FROM @t;
END;
请注意,我正在为@t
使用组合模式。您将需要在@t
的查询中创建与table1
相似或相同的架构proc
;