SQL存储过程参数长度问题
DECLARE@MainSqlvarchar(8000);SET@MainSql='SELECTA,B1,B2,B3FROM#1UNIONALLSELECTA,B1,B2...
DECLARE @MainSql varchar(8000);
SET @MainSql =
'SELECT A,B1,B2,B3 FROM #1
UNION ALL
SELECT A,B1,B2,B3 FROM #2'
由于我代码的长度远超过8000,所以想到两个解决办法,但是都遇到点问题,请高手指教。
方法1:
把@MainSql拆分成若干个小的变量在执行
DECLARE @MainSql1 varchar(8000);
DECLARE @MainSql2 varchar(8000);
SET @MainSql1 =
'SELECT A,B1,B2,B3 FROM #1'
SET @MainSql2=
'SELECT A,B1,B2,B3 FROM #2'
EXECUTE ( @MainSql1 + @MainSql2 );
可是这样输出的结果集是两个表,我要求是一张表,请问如何解决?
方法2:
创建临时表把每个变量的结果存在临时表中
遇到的问题是,我的临时表必须动态命名,因为SELECT A,B1,B2,B3 FROM #1中的B1,B2,B3是动态取出来的,也可能叫C1,C2,C3,是我根据传入的参数在SQL查询中行转列查到的列名,要求必须输出我查到的这个列命,请问创建临时表的时候如何动态命名?即
CREAET TABLE #T
(A INT,
------动态列名称
) 展开
SET @MainSql =
'SELECT A,B1,B2,B3 FROM #1
UNION ALL
SELECT A,B1,B2,B3 FROM #2'
由于我代码的长度远超过8000,所以想到两个解决办法,但是都遇到点问题,请高手指教。
方法1:
把@MainSql拆分成若干个小的变量在执行
DECLARE @MainSql1 varchar(8000);
DECLARE @MainSql2 varchar(8000);
SET @MainSql1 =
'SELECT A,B1,B2,B3 FROM #1'
SET @MainSql2=
'SELECT A,B1,B2,B3 FROM #2'
EXECUTE ( @MainSql1 + @MainSql2 );
可是这样输出的结果集是两个表,我要求是一张表,请问如何解决?
方法2:
创建临时表把每个变量的结果存在临时表中
遇到的问题是,我的临时表必须动态命名,因为SELECT A,B1,B2,B3 FROM #1中的B1,B2,B3是动态取出来的,也可能叫C1,C2,C3,是我根据传入的参数在SQL查询中行转列查到的列名,要求必须输出我查到的这个列命,请问创建临时表的时候如何动态命名?即
CREAET TABLE #T
(A INT,
------动态列名称
) 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询