当前位置: 代码迷 >> Sql Server >> union 在存储过程中的应用解决方案
  详细解决方案

union 在存储过程中的应用解决方案

热度:31   发布时间:2016-04-27 15:11:39.0
union 在存储过程中的应用
CREATE       PROCEDURE   Pro_SelectTable
@TblN   VarChar(8000),
@SelectWhere   VarChar(8000)
AS  
Declare   @SqlStr   VarChar(8000)  
Declare   @Pointpre   int
Declare   @Pointcur   int
Declare   @Tbcur   varchar(100)
SET   @Pointpre=1
SET   @Pointcur=1
SET   @Tbcur= ' '
SET   @SqlStr= ' '

IF     @TblN <> ' '
    BEGIN
      SET   @Pointcur=charindex( ', ',@TblN,@Pointpre)
     
      IF   @Pointcur=0
          SET   @[email protected]+Char(9)+ 'Select   *     from '+char(9)[email protected]   /*就一个查询表的情况*/
      ELSE
          BEGIN
          WHILE   (@Pointcur <> 0)
          BEGIN
          SET   @Pointcur=charindex( ', ',@TblN,@Pointpre)
          IF   @Pointcur <> 0

          SET   @Tbcur=substring(@TblN,@Pointpre,@[email protected])   /*得到非最后一个查询表的名字*/
          ELSE
          SET   @Tbcur=substring(@TblN,@Pointpre,LEN(@TblN)[email protected]+1)   /*得到最后一个查询表的名字*/
          SET   @[email protected]+1
         
          IF   @SqlStr <> ' '

          SET   @[email protected]+Char(9)+   UNION     ALL   +Char(9)+ 'Select   *     from '+char(9)[email protected]

          ELSE
         
          SET   @[email protected]+Char(9)+ 'Select   *     from '+char(9)[email protected]
         
          CONTINUE
          END
          END    
    END
/*IF   @SelectWhere <> ' '
          SET   @[email protected]+Char(9)+ 'Where '+Char(9)[email protected]
*/
exec(@SqlStr)


==============
服务器:   消息   156,级别   15,状态   1,过程   Pro_SelectTable,行   35
在关键字   'UNION '   附近有语法错误。


请各位大虾帮忙,不胜感激!

------解决方案--------------------
CREATE PROCEDURE Pro_SelectTable
@TblN VarChar(8000),
@SelectWhere VarChar(8000)
AS
Declare @SqlStr VarChar(8000)
Declare @Pointpre int
Declare @Pointcur int
Declare @Tbcur varchar(100)
SET @Pointpre=1
SET @Pointcur=1
SET @Tbcur= ' '
SET @SqlStr= ' '

IF @TblN <> ' '
BEGIN
SET @Pointcur=charindex( ', ',@TblN,@Pointpre)

IF @Pointcur=0
SET @[email protected]+Char(9)+ 'Select * from '+char(9)[email protected] /*就一个查询表的情况*/
ELSE
BEGIN
WHILE (@Pointcur <> 0)
BEGIN
SET @Pointcur=charindex( ', ',@TblN,@Pointpre)
IF @Pointcur <> 0

SET @Tbcur=substring(@TblN,@Pointpre,@[email protected]) /*得到非最后一个查询表的名字*/
ELSE
SET @Tbcur=substring(@TblN,@Pointpre,LEN(@TblN)[email protected]+1) /*得到最后一个查询表的名字*/
  相关解决方案