我在mssql中遇到了存储过程(SP)的问题。我所拥有的是一个表,其中一列包含一个SP名称,我需要做的是获取该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,Level 16,State 62,Line 4找不到存储过程''。
这是一个包含三个SELECT
语句和UNION
语句的SP,这个SP是我需要访问的第三个第二个UNION
(最后SELECT
语句)工作
有谁知道我该怎么做?
答案 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
参数