考慮以下放養PROC:執行與參數的存儲過程
CREATE PROCEDURE Test (
@Table1 NVARCHAR (100), @Table2 NVARCHAR(100))
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sSQL nvarchar(500);
SELECT @sSQL = N'SELECT * FROM ' + @Table1+' '+ @Table2
+ 'where '[email protected]+'.id = '[email protected]+'.id_dept';
EXEC sp_executesql @sSQL
END
我曾嘗試使用下面的語法來執行它(但我得到一個錯誤):
exec Test @table1='dept', @table2='emp'
編輯:
使用Gordon Linoff's
答案:
alter PROCEDURE Test (
@Table1 NVARCHAR (100), @Table2 NVARCHAR(100))
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sSQL nvarchar(500);
SELECT @sSQL = N'SELECT * FROM ' + @Table1 + ' JOIN '+ @Table2
+ ' ON '+ @Table1+'.id = '+ @Table2+ '.id_dept';
EXEC sp_executesql @sSQL;
END
,然後將下面給我一個錯誤:
exec Test @table1='dept', @table2='emp';
以下是錯誤:
Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32)
您的查詢語法沒有意義。您的'FROM'子句缺少兩個表所需的'JOIN'。 –
那麼,錯誤文本是什麼? –
之前告訴我們的錯誤文本,試加逗號爲'@表1 + ' '+ @ Table2'取代'@表1 +'' + @ Table2'。 –