首页 > 解决方案 > 如何将参数传递给我的查询但不在 SQL Server 中执行

问题描述

我想将日期参数传递给我的查询,该查询存储在我的配置表中,并将更新后的查询插入另一列。我还有一个 queryname 列,通过它我可以识别我的查询,这些查询是 oracle 查询并且长度很大。所以这就是为什么我不希望它们被执行,而只是将参数传递给它们,然后将更新的查询存储到 SQL Server 中的另一列。此外,我将在 ssis 中执行此存储过程,并在运行时提供查询名称

所以到目前为止我的代码是: -

Create spUpdateQuery
    @queryname varchar(500)
As 
Begin
    Declare @date1 int
    Declare @date2 int
    Declare @oraclequery nvarchar(max)

    Select @date1 = firstdate, @date2 = lastdate, @oraclequery = query 
    from config_table 
    where queryname = @queryname 

    Set @updatedquery = (@oraclequery, @date1, @date2)
End

我该怎么做?

我也从我的配置表中获取日期值。请帮忙

问候

标签: sqlsql-server

解决方案


如果是我,我会把它们分开,然后在运行时传递参数。

但是,如果您愿意,您可以像对待任何其他 nvarchar 一样对待 @updatedquery 和 @oraclequery。

SELECT @updatedquery = REPLACE(@oraclequery, '@date1', @date1)
SELECT @updatedquery = REPLACE(@oraclequery, '@date2', @date2)

确保您在@oraclequery 中需要引号的地方加上引号,并且您可能希望将@date1 和@date1 包装在一个CONVERT 中以控制您在最终字符串中获得的格式。


推荐阅读