基于(用户输入)从表中提取NOT NULL值的存储过程

时间:2018-06-05 08:17:58

标签: sql-server

我有2个表,tbl1是我存储了一个业务规则的地方,该规则包含从tbl2中提取NOT NULL值的查询。

我使用了左连接,这是有效的: 查询如下:

SELECT Data.SSO, Data.Amount FROM Data
LEFT JOIN Configuration ON
Data.SSO_Id = Configuration.ID_Field
WHERE
Data.SSO IS NOT NULL

我构建了一个Stored过程,该过程应该从用户那里获取输入,例如'SSO'并从其他表中检索此输入的NOT NULL值:

以下代码:

ALTER PROCEDURE spGetNotNullVal
@User_Input nvarchar(max),
@Result_Not_Null nvarchar(max) OUTPUT
AS
BEGIN
    SELECT @Result_Not_Null =  Configuration.Business_Rule FROM Configuration 
        WHERE Configuration.Field_Name = @User_Input
END

--Executing the stored procedure/Will sore @Result_Not_Null Value into @Final_Result and print it.

DECLARE @Final_Result nvarchar(max)
EXECUTE spGetNotNullVal 'Legal Entity', @Final_Result Output
PRINT @Final_Result

问题是,当我执行@Final_Result时,它会回吐相同的Left Join查询,而不是执行它并给出表:

SELECT Data.SSO, Data.Amount FROM Data
LEFT JOIN Configuration ON
Data.SSO_Id = Configuration.ID_Field
WHERE
Data.SSO IS NOT NULL

我哪里错了?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

此TSQL仅从配置表

获取业务规则

EXECUTE spGetNotNullVal 'Legal Entity', @Final_Result Output

但实际上并没有执行内容。

为此你需要尝试这样的事情

EXEC sys.sp_executesql @Final_Result