我正在尝试创建动态存储过程。 这是初始代码
Declare @sqlstrsel as nvarchar(max) ;
Declare @cols as nvarchar(max) ;
Declare @tables as nvarchar(max) ;
Declare @condt as nvarchar(max) ;
Set @cols='*'
Set @tables='products'
Set @condt=''
Set @sqlstrsel = 'select ' + @cols+ 'from ' +@table +@condt
Exec (@sqlstrsel)
此代码可以正常工作,但是当更改为如下所示的存储过程时
Alter proc selectT
@cols nvarchar(max) ;
@tables nvarchar(max) ;
@condt nvarchar(max) ;
As
Begin
Declare @sqlstrsel as nvarchar(max) ;
Set @sqlstrsel = 'select ' + @cols+ 'from ' +@table +@condt
Exec (@sqlstrsel);
End
当我在新查询中执行此proc时,通过提供参数
Set @par1='*'
Set @par2= 'products'
Set @par3 =''
Exec selectT(@par1,@par2,@par3)
我遇到两个错误 未提供过程或函数“ selectt”的期望参数“ @cols”, 和 '@ par1'附近的语法不正确 预先声明参数1至参数3。