存储过程变量名太长,高手指点

xinkejun 2004-04-16 07:50:19
以下是我执行的过程(模仿邹建兄合并多个数据库的例子,先合并多个数据表,再将竖表变成横表),中间那段语句加长就不行了,把@sql打出来一看,已经被截断了,如何处理望高手指点。

CREATE PROC P_SCM_XMNR_H AS

declare @sql char(8000)

set @sql = ''

select @sql = @sql + '
select 编号=fld_xysbh
,产品名称=max(case when fld_zh=1 and fld_th=1 and fld_kh=0 and fld_xh=1 then fld_xmnr else '''' end)
,产品型号=max(case when fld_zh=1 and fld_th=2 and fld_kh=0 and fld_xh=1 then fld_xmnr else '''' end)
,功能=max(case when fld_zh=1 and fld_th=4 and fld_kh=0 and fld_xh=1 then fld_xmnr else '''' end)
。。。。。。。。。。。。。。。。。。。。。

from xys.dbo.'
+ name + ' group by fld_xysbh' + ' union all '
from xys.dbo.sysobjects where xtype='u' and name like 'tab[_]xmnr%'

if len(@sql) > 10
begin
set @sql = left(@sql, len(@sql) - 10)
exec(@sql)
end

print @sql
GO
...全文
56 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinkejun 2004-04-16
  • 打赏
  • 举报
回复
现在是实验数据,暂时不会出现这种情况,将来正式运行数据表有很多,超过是迟早的事,郁闷。。。
progress99 2004-04-16
  • 打赏
  • 举报
回复
估計是被回車與換行符佔了位,你試試將代碼少分行。

如:

select @sql = @sql + '
select 编号=fld_xysbh
,产品名称=max(case when fld_zh=1 and fld_th=1 and fld_kh=0 and fld_xh=1 then fld_xmnr else '''' end) ...
改為:
select @sql = @sql + 'select 编号=fld_xysbh,产品名称=max(case when fld_zh=1 and th=1 and fld_kh=0 and fld_xh=1 then fld_xmnr else '''' end)

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧