首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

讯息 137,级别 15,状态 2,第 2 行 必须声明标量变量 "@sql2"

2012-11-07 
消息 137,级别 15,状态 2,第 2 行 必须声明标量变量 @sql2。declare @sql2 varchar(8000)set @sql2 se

消息 137,级别 15,状态 2,第 2 行 必须声明标量变量 "@sql2"。
declare @sql2 varchar(8000)
 set @sql2 = 'select cp.corpname, dt.deptname,
pbc.pname, pc.duty,pc.pcl, pbc.pk_psnbasdoc '  
select @sql2=@sql2+',sum(case cz.corsename when '''+corsename+''' then ge.score else 0 end) [' + corsename + ']'
from (select corsename from psncorse ) as a 
set @sql2 = @sql2 +' from psnbasdoc pbc 
join psndoc pc on pbc.pk_psnbasdoc=pc.pk_psnbasdoc
join dept dt on pc.pk_dept=dt.pk_dept
join corp cp on dt.pk_corp=cp.pk_corp
join psnscore ge on pc.pk_psndoc=ge.pk_psndoc
join psncorse cz on cz.pk_psncorse=ge.pk_psncorse
group by cp.corpname, dt.deptname,
pbc.pname, pc.duty,pc.pcl ,pbc.pk_psnbasdoc'
 
 exec @sql2
请问是哪里出错了啊 还有如何用这个语句来创建一个试图?

[解决办法]
你的exec是有问题,但是那个报错不是这个问题,先把psncorse 表结构给出来看看
[解决办法]

SQL code
--先把上面的内容加到存储过程再--创建视图:IF OBJECT_ID('v_test') IS NOT NULL    DROP VIEW v_testGOCREATE VIEW v_testASSELECT * FROM OPENROWSET(         'sqloledb',          'Trusted_Connection=yes', --此处可用'uid=sa;pwd=123' (SQL认证的方式来代替)         'SET FMTONLY OFF;  --注意:要加上此选项          EXEC MYDB..p_test --         '     )GOselect * from v_test 

热点排行