2010-02-16 69 views
0

可以在任何一个你帮我把这个查询转换成动态查询与输出参数动态查询

DECLARE @Measure_Code nvarchar(50) 
DECLARE @Transaction_Date datetime 
DECLARE @Spec_Code nvarchar(max) 
DECLARE @Error_Code nvarchar(500) 
DECLARE @Operation_Status bit 
DECLARE @Query nvarchar(1000) 

SET @Measure_Code = 'CFL_WATTS' 
SET @Transaction_Date = 02/16/2010 

PRINT @Transaction_Date 

SET @Spec_Code = 'CFL_Watts = 45' 
SET @Error_Code = NULL 
SET @Operation_Status = NULL 

SET @Query = 'USP_TRM_MEASURE_EVALUATE ' + '@Measure_Code'+','+'@Transaction_Date'+','+'@Spec_Code'+','+ 
       '@Error_Code output'+','+'@OPERATION_STATUSoutput' 

PRINT @Query 

EXEC(@Query) 

我想要的输出

@QUERY = USP_TRM_MEASURE_EVALUATE @MeasureCode,@Transaction_Date, @Spec_Code, @Error_Code output, @Operation_Status output 
+0

你为什么要构建为字符串,并调用exec?为什么不直接直接调用它 – zapping 2010-02-16 12:43:53

+0

直接调用时它显示一些错误,如 你必须声明@Measure_Code – susanthosh 2010-02-16 13:24:23

+0

的值,你应该在@Qury字符串的开始处包含'EXECUTE',并且你还需要一个空间在这里结束:'@OPERATION_STATUS输出' – 2010-02-16 14:43:49

回答

0

你不能字符串传递到执行exec( )函数,并期望该字符串中的局部变量将被视为调用范围中的变量,无论是传入proc还是从proc返回。

只要打电话给PROC直接:

exec USP_TRM_MEASURE_EVALUATE @MeasureCode,@Transaction_Date, 
@Spec_Code, @Error_Code output, @Operation_Status output