sql 存储过程 拼字符串赋值问题~~~
SQL code
必须声明标量变量 "@time"。
这个问题怎么解决?
需求:
1、@time 在下文中使用,不能声明在串中。
2、执行的sql只能用串拼出来。
怎么才能得到@time值?
declare @sql varchar(1000) declare @time datetime set @sql = 'select @time = getdate()' exec (@sql)
必须声明标量变量 "@time"。
这个问题怎么解决?
需求:
1、@time 在下文中使用,不能声明在串中。
2、执行的sql只能用串拼出来。
怎么才能得到@time值?
作者: my_1234 发布时间: 2011-06-14
如果在动态语句字符串中含有变量,则不能直接用exec执行,要用SP_EXECUTESQL系统存储过程来执行.
给个例子你看一下,聪明的你应该能学会:
SQL code
给个例子你看一下,聪明的你应该能学会:
SQL code
create table tablea(bh nvarchar(10)) insert into tablea select 'kafd' insert into tablea select 'keins' insert into tablea select 'euwnq' go declare @bh nvarchar(30), @a nvarchar(100), @wh nvarchar(50), @dd nvarchar(50) set @bh='bh' set @wh='k' set @a='select @ddOUT=isnull(max('+@bh+'),'''') from tablea where ('+@bh+' like '''+@wh+'%'')' set @a='select @dd=isnull(max('+@bh+'),'''') from tablea where ('+@bh+' like '''+@wh+'%'')' exec SP_EXECUTESQL @a,N'@dd varchar(50) output ',@dd output select @dd /* -------------------------------------------------- keins (1 行受影响) */
作者: qianjin036a 发布时间: 2011-06-14
SQL code
类似这样,用sp_executesql即可。
declare @a int; declare @sql nvarchar(4000); set @a=1; SET @sql='select @b set @b=@b+1 select @b'; exec sp_executesql @sql, N'@b int output', @b=@a;
类似这样,用sp_executesql即可。
作者: maco_wang 发布时间: 2011-06-14
SQL code
declare @a int declare @sql nvarchar(1000) --注意不要写成varchar set @a=1 SET @sql=N'select @b set @b=@b+1 select @b' exec sp_executesql @sql, N'@b int output', @b=@a
作者: AcHerat 发布时间: 2011-06-14
SQL code
declare @num int, @sqls nvarchar(4000) set @sqls='select count(*) from tableName' exec(@sqls) --如何将exec执行结果放入变量中? declare @num int, @sqls nvarchar(4000) set @sqls='select @a=count(*) from tableName ' exec sp_executesql @sqls,N'@a int output',@num output select @num
作者: fredrickhu 发布时间: 2011-06-14