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 @SqlStr=@SqlStr+Char(9)+ 'Select * from '+char(9)+@TblN /*就一个查询表的情况*/
ELSE
BEGIN
WHILE (@Pointcur <> 0)
BEGIN
SET @Pointcur=charindex( ', ',@TblN,@Pointpre)
IF @Pointcur <> 0
SET @Tbcur=substring(@TblN,@Pointpre,@Pointcur-@Pointpre) /*得到非最后一个查询表的名字*/
ELSE
SET @Tbcur=substring(@TblN,@Pointpre,LEN(@TblN)-@Pointpre+1) /*得到最后一个查询表的名字*/
SET @Pointpre=@Pointcur+1
IF @SqlStr <> ' '
SET @SqlStr=@SqlStr+Char(9)+ UNION ALL +Char(9)+ 'Select * from '+char(9)+@Tbcur
ELSE
SET @SqlStr=@SqlStr+Char(9)+ 'Select * from '+char(9)+@Tbcur
CONTINUE
END
END
END
/*IF @SelectWhere <> ' '
SET @SqlStr=@SqlStr+Char(9)+ 'Where '+Char(9)+@SelectWhere
*/
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 @SqlStr=@SqlStr+Char(9)+ 'Select * from '+char(9)+@TblN /*就一个查询表的情况*/
ELSE
BEGIN
WHILE (@Pointcur <> 0)
BEGIN
SET @Pointcur=charindex( ', ',@TblN,@Pointpre)
IF @Pointcur <> 0
SET @Tbcur=substring(@TblN,@Pointpre,@Pointcur-@Pointpre) /*得到非最后一个查询表的