考虑以下放养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'。 –