34,593
社区成员
发帖
与我相关
我的任务
分享
create procedure getdata1
as
begin
declare @maxnum int, @tablename varchar(30), @sql varchar(256)
set @tablename='test'
set @sql = N'select @max_num=count(*) from ' + @tablename
exec sp_executesql @sql,N'@max_num int output',@max_num=@maxnum output
print @maxnum
end
消息 214,级别 16,状态 2,过程 sp_executesql,第 1 行
过程需要类型为 'ntext/nchar/nvarchar' 的参数 '@statement'。
DECLARE @tablename nvarchar(100)
SET @tablename = 'table1'
DECLARE @maxnum int
DECLARE @sql nvarchar(1000)
-- 为了明确区分内外变量的关系,用了不同的命名,其实可以用相同的命名的
SET @sql = N'select @max_num=count(*) from '+@tablename
EXEC sp_executesql @sql ,
N'@max_num int OUTPUT',
@max_num = @maxnum OUTPUT
SELECT @maxnum
CREATE PROC [dbo].[ttt] ( @tablename VARCHAR(200) )
AS
BEGIN
DECLARE @str NVARCHAR(MAX)
SET @str = ' DECLARE @maxnum INT
SELECT @maxnum=count(*) from ' + @tablename+'
select @maxnum'
EXEC(@str)
END