Mssql:执行名称来自另一个sp的存储过程

时间:2013-02-26 13:37:15

标签: sql-server stored-procedures

我在mssql中遇到了存储过程(SP)的问题。我所拥有的是一个表,其中一列包含一个SP名称,我需要做的是获取该SP名称并在我的SP中执行该SP。

所以我做了什么:

  1. 我有一个SP - 确定
  2. 使用SP的名称声明一个变量,该变量将获取SP名称和表中的SP - ok
  3. DECLARE @rs varchar(max)
    DECLARE @sql varchar(max) = N'usp_GetSP)'
    EXECUTE sp_executesql @sql, @rs output
    EXECUTE @rs
    

    我知道在执行EXECUTE sp_executesql @sql时我得到SP名称,但@rs,我不确定。我收到这个错误:

      

    消息214,级别16,状态2,过程sp_executesql,第1行过程   期望'ntext / nchar / nvarchar'类型的参数'@statement'。消息   2812,Level 16,State 62,Line 4找不到存储过程''。

    1. 执行我回来的SP - 这是问题
    2. 这是一个包含三个SELECT语句和UNION语句的SP,这个SP是我需要访问的第三个第二个UNION(最后SELECT语句)工作

      有谁知道我该怎么做?

1 个答案:

答案 0 :(得分:0)

For Error Message: 我认为你应该将@sql声明为nvarchar而不是varchar;

在您的情况下,您将指定的nvarchar值(N'usp_GetSP')转换为varchar,因为您已将@sql定义为varchar类型。

DECLARE @rs nvarchar(max)
DECLARE @sql nvarchar(max) = N'usp_GetSP' --not sure why you have ')'
EXECUTE sp_executesql @sql, @rs output
EXECUTE ( @rs )

check this link如何OUTPUT

使用sp_exeutesql参数