0

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

所以我做了什么:

  1. 我有一个 SP - 好的
  2. 使用 SP 的名称声明一个变量,该变量将获取表中的 SP 名称和 SP - 好的

.

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,级别 16,状态 62,第 4 行找不到存储过程“”。

  1. 执行我回来的那个 SP - 这就是问题所在

这是一个包含三个SELECT语句的 SP,并且这个 SP 是我需要开始工作UNION的第三秒UNION(最后一个语句)。SELECT

有谁知道我该怎么做?

4

1 回答 1

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 )

请查看此链接以了解如何使用OUTPUT参数sp_exeutesql

于 2013-02-26T13:42:42.823 回答