使用动态SQL我想在表中插入两列。将使用从另一个存储过程传入的两个参数计算第二列。我知道我可以使用sp_execute执行以下操作但是想知道我是否可以使用EXEC执行类似操作
DECLARE @vsql nvarchar(max)
DECLARE @p1 numeric
SET @p1 = 5
SET @vsql = ' Select PORTFOLIO_CODE, (@p1 * @p1) as leverage
INTO greg
from ssc.slh
select * from greg'
Exec sp_executesql
@stmt = @vsql,
@params = N'@p1 as numeric',
@p1 = @p1
我可以使用Exec执行此操作吗?以下似乎不起作用,乘法操作数需要是一个刺痛的字面值吗?
DECLARE @vsql nvarchar(max)
DECLARE @p1 numeric
SET @p1 = 5
SET @vsql = ' Select PORTFOLIO_CODE, (' + @p1 * @p1 + ') as leverage
INTO greg
from ssc.slh
select * from greg'
Exec sp_executesql
答案 0 :(得分:1)
为什么需要动态SQL?您可以在查询输出中使用该变量
DECLARE @p1 numeric = 5;
Select
PORTFOLIO_CODE, (@p1 * @p1) as leverage
from ssc.slh
编辑: 用于动态列映射。 @ p1和@ p2都是你想要乘法的列名吗?
DECLARE
@p1 nvarchar(200) = 'myFirstColumnName',
@p2 nvarchar(200) = 'mySecondColumnName',
DECLARE @vsql nvarchar(max) = 'SELECT PORTFOLIO_CODE, ([' + @p1 +'] * ['+ @p2 + ']) leverage from ssc.slh';
PRINT @vsql;
Exec sp_executesql @vsql;