sql-server - 在动态查询中分配存储过程的 OUTPUT 参数
问题描述
关于这个存储过程:
CREATE PROCEDURE Test
(@outparam int OUTPUT)
AS
BEGIN
DECLARE @SQL VARCHAR(1000)
SET @SQL = '
DECLARE @outparam int
IF (1=0)
PRINT ''do something here. I use dynamic stuff in IF and in here ''
ELSE IF (1=0)
PRINT ''do something here. I use dynamic stuff in IF and in here ''
ELSE if (1=1)
BEGIN
SET @outparam = 5
END
'
EXEC (@SQL)
END
我需要@outparam
在动态查询中分配,因为所有逻辑都在那里。
它不起作用。我明白为什么,但我不知道如何解决它
DECLARE @out int
EXEC Test @outparam = @out OUTPUT
SELECT @out
解决方案
感谢@DaleK 这行得通
CREATE procedure Test
(
@outparam int OUTPUT
)
as
BEGIN
DECLARE @SQL NVARCHAR(1000)
SET @SQL = '
IF (1=0)
print ''do something here. i use dynamic stuff in IF and in here ''
ELSE IF (1=0)
print ''do something here. i use dynamic stuff in IF and in here ''
ELSE if (1=1)
BEGIN
SET @outparam = 5
END
'
EXEC sp_executesql @sql,
N'@outparam VARCHAR(MAX) OUTPUT',
@outparam OUTPUT;
END
推荐阅读
- jenkins - 在 Jenkins 中构建失败时拒绝 Bitbucket 中的拉取请求
- android - 在 kotlin 中创建一个抽象类可以更好地向其子类传达其职责
- spring - 如果我将 JWT 存储在 httpOnly cookie 中,我将如何在我的 Spring Boot 应用程序中使用它来调用其他 REST API?
- javascript - 使用下拉选择过滤 html 表
- javascript - 如何通过网站的图像缩放来将此范围滑块作为父级?(HTML/CSS/JavaScript)
- c++ - 大学作业的 C++ UVa 问题中的时间限制超出问题
- python - 对于 python selenium,我可以随后添加、更新或删除 AbstractEventListener 吗?
- regex - logstash 中的正则表达式变异 gsub 以替换字符串中的字符
- python - Pandas:通过将 2 列值(复合键)匹配到 1 列和另一个数据框的列标签/索引来映射 2 个数据框之间的值
- android - Android Studio 中的调用链接