‘壹’ 如何把EXEC(@sql)得到的结果集(列是动态的)插入到一张临时表
insert into #ForMonth exec(@Sql)使用这样的SQL语句,首先是表#ForMonth必须存在,如果不存在这个表,要用select * into #ForMonth from 表名 你可以这样写试一下(只后面几句,前面的不变) SET @Sql='select * into #ForMonth from #TotalSalesForMonth pivot (sum(total) for monthN in ('+@str+') ) as pvt '
‘贰’ SQL exec 执行完后不显示结果
先提几个疑问,你设置那变量也没用啊,下边就是一个可执行语句,查出来就是你想要的结果了,根本没必要弄个存储过程
还有,你这个只是建立存储过程,并不是执行存储过程,所以肯定没结果啊
‘叁’ 怎么把拼接完以后的sql用exec输出结果,sql是拼接字符串的很麻烦
没有搞懂你什么意思?
【极品飞鸽】
‘肆’ 怎么获取exec(@sql)的执行结果
exec(@sql)执行后,结果就会显示在结果栏里。
举例:
代码如下
declare@tablenamevarchar(20)
declare@sqlvarchar(2000)
set@tablename='test'
set@sql='select*from'+@tablename+''
exec(@sql)
执行结果:
‘伍’ mssql的exec怎么才能把结果赋值给变量
通过
SP_EXECUTESQL
的第2个参数来定义有哪些参数
输出的加OUTPUT
后面的参数为执行的时候,具体参数的数据。输出的加OUTPUT1>BEGIN
2>DECLARE@SqlNVARCHAR(200);
3>DECLARE@nameVARCHAR(10);
4>SET@Sql='SELECT@name=nameFROMtest_dysqlWHEREid=1';
5>PRINT@Sql;
6>EXECSP_EXECUTESQL@Sql,N'@nameVARCHAR(10)OUTPUT',@nameOUTPUT;
7>PRINT@name;
8>END
9>go
SELECT@name=nameFROMtest_dysqlWHEREid=1
A
‘陆’ SQL中exec的用法
此句话应该这样:exec sp_getDjLsh 'DJH',@djlsh OUTPUT
exec @djlsh=sp_GetDjLsh 'DJH',@djlsh 这有点多此一举了
'DJH'表示输入参数
‘柒’ SQL 执行exec的返回值
直接改过程吧,你这个绕来绕去太麻烦。
这么改:
begin
declare @str varchar(4000)
set @str = 'select * from AAA'
exec @str
end
省得你还要取出来
‘捌’ sql server 如获得exec()执行语句的返回值
其实要分两种,一种是成功执行,另一种是执行失败抛出错误
建议使用sqlserver2005以后(看你用了max应该是2005以后的版本)新增的结构体begin try...end try...begin catch...end catch来捕获
ps.题外话,要保存中文,最好使用nvarchar,虽然存储空间增大了一倍,但是会避免有些情况下的乱码问题
‘玖’ 怎样知道ExecSQL的执行结果是成功还是失败
怎样知道ExecSQL的执行结果是成功还是失败
exec(@sql)执行后,结果就会显示在结果栏里。
举例:
代码如下
declare @tablename varchar(20)
declare @sql varchar(2000)
set @tablename='test'
set @sql='select * from '+@tablename+''
exec(@sql)