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

求一经典语句!存储过程写法。解决思路

2012-01-18 
求一经典语句!存储过程写法。我的写法不对,请指点:CREATEPROCEDUREPRO_GetHSLX(@varTbNamevarchar(50),@var

求一经典语句!存储过程写法。
我的写法不对,请指点:
CREATE   PROCEDURE   PRO_GetHSLX(@varTbName   varchar(50),@varKMBH   VARCHAR(100))
AS
BEGIN
SELECT   KMBH,KMLB   ,BZ1,BZ2   ,BZ3   ,BZ4   ,
                BZ5   ,BZ6,ISNULL(KMND, '   ')   AS   KMND,ISNULL(YELX, '   ')   AS   YELX  
                INTO   #TB_TEMP      
FROM       '   +@varTbName   + '   WHERE   KMBH   =   ' ' '+@varKMBH   ' ' '    
GROUP   BY   KMBH  

SELECT   A.KMBH   AS   '编号 ',B.KMMC   AS   '名称 ',
(CASE   WHEN   A.KMLB   = '1 '   THEN     '是 '   ELSE   '   '   END)   AS   '是 ',
(CASE   WHEN   A.BZ1= '1 '   THEN   '是 '     ELSE   '   '   END   )   AS   '单位 ',
(CASE   WHEN   A.BZ2= '1 '   THEN   '是 '     ELSE   '   '   END   )   AS   '个人 ',
(CASE   WHEN   A.BZ3= '1 '   THEN   '是 '     ELSE   '   '   END   )     AS   '现金 ',
(CASE   WHEN   A.BZ4= '1 '   THEN   '是 '   ELSE   '   '   END)   AS     '成本 '   ,
(CASE   WHEN   A.BZ5= '1 '   THEN   '是 '   ELSE   '   '   END)   AS   '产品 '   ,
(CASE   WHEN   A.BZ6= '1 '   THEN   '是 '   ELSE   '   '   END)   AS   '部门 '   ,
(CASE   WHEN   A.KMND= '   '   THEN   '   '     ELSE   A.KMND   END)   AS   '专项 ',
(CASE   WHEN   A.YELX= '   '   THEN   '   '   ELSE   A.YELX   END   )   AS   '要素 '  
FROM   #TB_TEMP   A,   '+@varTbName   + '   B    
WHERE   A.KMBH=B.KMBH   ORDER   BY   A.KMBH  
END

[解决办法]
CREATE PROCEDURE PRO_GetHSLX(@varTbName varchar(50),@varKMBH VARCHAR(100))
AS
BEGIN
exec ( '
SELECT KMBH,KMLB ,BZ1,BZ2 ,BZ3 ,BZ4 ,
BZ5 ,BZ6,ISNULL(KMND, ' ' ' ') AS KMND,ISNULL(YELX, ' ' ' ') AS YELX
INTO ##TB_TEMP
FROM ' +@varTbName + ' WHERE KMBH = ' ' '+@varKMBH + ' ' '
GROUP BY KMBH
')

SELECT A.KMBH AS '编号 ',B.KMMC AS '名称 ',
(CASE WHEN A.KMLB = '1 ' THEN '是 ' ELSE ' ' END) AS '是 ',
(CASE WHEN A.BZ1= '1 ' THEN '是 ' ELSE ' ' END ) AS '单位 ',
(CASE WHEN A.BZ2= '1 ' THEN '是 ' ELSE ' ' END ) AS '个人 ',
(CASE WHEN A.BZ3= '1 ' THEN '是 ' ELSE ' ' END ) AS '现金 ',
(CASE WHEN A.BZ4= '1 ' THEN '是 ' ELSE ' ' END) AS '成本 ' ,
(CASE WHEN A.BZ5= '1 ' THEN '是 ' ELSE ' ' END) AS '产品 ' ,
(CASE WHEN A.BZ6= '1 ' THEN '是 ' ELSE ' ' END) AS '部门 ' ,
(CASE WHEN A.KMND= ' ' THEN ' ' ELSE A.KMND END) AS '专项 ',


(CASE WHEN A.YELX= ' ' THEN ' ' ELSE A.YELX END ) AS '要素 '
FROM ##TB_TEMP A, '+@varTbName + ' B
WHERE A.KMBH=B.KMBH ORDER BY A.KMBH
END
[解决办法]
CREATE PROCEDURE PRO_GetHSLX(@varTbName varchar(50),@varKMBH VARCHAR(100))
AS
BEGIN
exec ( '
SELECT KMBH,KMLB ,BZ1,BZ2 ,BZ3 ,BZ4 ,
BZ5 ,BZ6,ISNULL(KMND, ' ' ' ') AS KMND,ISNULL(YELX, ' ' ' ') AS YELX
INTO ##TB_TEMP
FROM ' +@varTbName + ' WHERE KMBH = ' ' '+@varKMBH + ' ' '
GROUP BY KMBH

SELECT A.KMBH AS ' '编号 ' ',B.KMMC AS ' '名称 ' ',
(CASE WHEN A.KMLB = ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END) AS ' '是 ' ',
(CASE WHEN A.BZ1= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END ) AS ' '单位 ' ',
(CASE WHEN A.BZ2= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END ) AS ' '个人 ' ',
(CASE WHEN A.BZ3= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END ) AS ' '现金 ' ',
(CASE WHEN A.BZ4= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END) AS ' '成本 ' ' ,
(CASE WHEN A.BZ5= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END) AS ' '产品 ' ' ,
(CASE WHEN A.BZ6= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END) AS ' '部门 ' ' ,
(CASE WHEN A.KMND= ' ' ' ' THEN ' ' ' ' ELSE A.KMND END) AS ' '专项 ' ',
(CASE WHEN A.YELX= ' ' ' ' THEN ' ' ' ' ELSE A.YELX END ) AS ' '要素 ' '
FROM ##TB_TEMP A, '+@varTbName + ' B
WHERE A.KMBH=B.KMBH ORDER BY A.KMBH
')

END

[解决办法]
CREATE PROCEDURE PRO_GetHSLX(@varTbName varchar(50),@varKMBH VARCHAR(100))
AS
BEGIN
EXEC( '
SELECT KMBH,KMLB ,BZ1,BZ2 ,BZ3 ,BZ4 ,
BZ5 ,BZ6,ISNULL(KMND, ' ' ' ') AS KMND,ISNULL(YELX, ' ' ' ') AS YELX
INTO #TB_TEMP
FROM '+@varTbName+ ' WHERE KMBH = ' ' '+@varKMBH + ' ' '
GROUP BY KMBH

SELECT A.KMBH AS ' '编号 ' ',B.KMMC AS ' '名称 ' ',
(CASE WHEN A.KMLB = ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END) AS ' '是 ' ',
(CASE WHEN A.BZ1= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END ) AS ' '单位 ' ',
(CASE WHEN A.BZ2= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END ) AS ' '个人 ' ',
(CASE WHEN A.BZ3= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END ) AS ' '现金 ' ',
(CASE WHEN A.BZ4= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END) AS ' '成本 ' ' ,
(CASE WHEN A.BZ5= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END) AS ' '产品 ' ' ,
(CASE WHEN A.BZ6= ' '1 ' ' THEN ' '是 ' ' ELSE ' ' ' ' END) AS ' '部门 ' ' ,
(CASE WHEN A.KMND= ' ' ' ' THEN ' ' ' ' ELSE A.KMND END) AS ' '专项 ' ',
(CASE WHEN A.YELX= ' ' ' ' THEN ' ' ' ' ELSE A.YELX END ) AS ' '要素 ' '


FROM #TB_TEMP A, '+@varTbName + ' B
WHERE A.KMBH=B.KMBH ORDER BY A.KMBH
')
END

热点排行