将过程A中的动态SQL结果分配给过程B中定义的变量

时间:2018-03-15 23:21:25

标签: sql-server stored-procedures dynamic-sql

我正在努力将结果返回到从不同存储过程调用的动态查询。这就是我想要实现的目标。

程序A:

CREATE PROCEDURE A
    @C1 int, @F1 int
AS
    SET @SQL = 'SELECT ID FROM EMPLOYEE_TABLE WHERE '+@C1+' = +'@F1'
    EXEC(@SQL)

程序B:

CREATE PROCEDURE B
    @C1 int, @F1 int
AS
    DECLARE @Result INT
    EXEC @Result = A  @C1, @F1

我需要运行存储过程B并让它返回给我结果。我似乎无法得到正确的结果。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

您可以尝试以下两个存储过程查询语句

程序A:

ALTER PROCEDURE A
@C1 VARCHAR(250),
@F1 int
AS
DECLARE @SQL AS VARCHAR(MAX);
SET @SQL = 'SELECT ID FROM PatientTest WHERE '+ @C1+' = ' + CONVERT(VARCHAR(12),@F1)
EXEC(@SQL)

程序B:

ALTER PROCEDURE B
@C1 VARCHAR(250),
@F1 int
AS
Declare @Result int
EXEC @Result = A  @C1, @F1

如果您将面临更多问题,请在评论中告诉我。谢谢。

答案 1 :(得分:0)

试试这两个。我想你会达到你预期的结果。

程序1

export=true

程序2

CREATE PROCEDURE GetValue
@ColumnName VARCHAR(250),
@ColumnValue VARCHAR(250)
AS
DECLARE @SQL AS VARCHAR(MAX);
SET @SQL = 'SELECT Email FROM Person WHERE '+ @ColumnName + ' = ''' + @ColumnValue + ''''
EXEC (@SQL)
-- EXEC GetValue 'MobileNo', '+8801919111333'