sql-server - 存储过程只返回表 1 的数据,而不是 10 个表
问题描述
ALTER PROCEDURE [dbo].[ProcessListSQL]
( --@CommaDelimitedList AS NVARCHAR(MAX),
@SQLtoExecute AS NVARCHAR(MAX),
@Result VARCHAR(MAX) OUTPUT)
AS
BEGIN
DECLARE @Statements TABLE
(PK INT IDENTITY(1,1) PRIMARY KEY,
SQLObject NVARCHAR (MAX)
)
SET @SQLtoExecute = REPLACE (@SQLtoExecute, '"', '''')
/*================*/
DECLARE @CommaDelimitedList AS NVARCHAR(MAX)
DECLARE @ddd NVARCHAR(MAX)
DECLARE @R1 NVARCHAR(MAX)
SET @ddd=''
SELECT @ddd = @ddd + organisation + ','
FROM dbo.Orgs;
SET @CommaDelimitedList = @ddd /*select all tables that need to be interrogated*/
/*================*/
INSERT INTO @Statements
SELECT PARAM
FROM [dbo].[fn_MVParam](@CommaDelimitedList,',')
DECLARE @i INT
SELECT @i = MIN(PK) FROM @Statements
DECLARE @max INT
SELECT @max = MAX(PK) FROM @Statements
DECLARE @SQL AS NVARCHAR(MAX) = NULL
DECLARE @Object AS NVARCHAR(MAX) = NULL
WHILE @i <= @max
BEGIN
SELECT @Object = SQLObject FROM @Statements WHERE PK = @i /*gets the table from the array table*/
SET @SQL = REPLACE(@SQLtoExecute, '{RP}', @Object) /*replaces RP with tablename */
-- Uncommend below to check the SQL
-- PRINT @SQL
DECLARE @returnstatus nvarchar(15); /*mh did this */
SET @returnstatus = NULL; /*mh did this */
EXECUTE sp_executesql @SQL,@R1=@R1
SET @Result = @Result + @R1
SELECT @Object = NULL
SELECT @SQL = NULL
SET @i = @i + 1
END
END
这工作正常,但只返回表集合来自函数的第一个表。
解决方案
我能做到这一点的最好方法是从过程 B 调用过程 A。在过程 B 中,将结果插入临时表并选择临时表,然后从 MVC c# 调用该临时表作为标准存储过程。
推荐阅读
- javascript - React Native 恢复原链接
- mysql - XAMPP 无法启动 MySQL(没有应用程序在同一端口上运行)
- amazon-web-services - AWS s3 ls 命令返回错误:拒绝访问
- c - 指令将跨越 PC
- python - 尝试从一系列字典中检索键时出现“类型错误:列表索引必须是整数或切片,而不是 str”
- azure - 使用 Azure Yaml 管道在正文中调用带有秘密变量的 powershell RestMethod
- java - CardView cardElevation 在 CardView 内绘制随机正方形
- python-3.x - Groupby并在Python中从左侧开始查找公共字符串部分
- mongodb - 如何在 mongodb 聚合查询中模拟循环?
- r - Shiny observe() 函数不适用于 Shinymanager