Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures SQL:在一个存储过程中组合多个动态结果集_Stored Procedures - Fatal编程技术网

Stored procedures SQL:在一个存储过程中组合多个动态结果集

Stored procedures SQL:在一个存储过程中组合多个动态结果集,stored-procedures,Stored Procedures,我们遇到了一个小问题,需要一些帮助——我们需要将一个存储过程中的多个结果集合并到一个结果集(这是Java报告框架的限制)。我们已经研究了Union等,但问题是存储过程resultset是多个交叉表结果,(1)每个resultset的列数未知,(2)每个resultset的列名未知 基本上,如果sp_u有3个结果,如: 身份证名称 1萨姆 2次 ID FName LName 约翰·雅各布 2次定时试验 3山姆·霍普金斯 身份证金额 1100 25000 理想的结果基本上是返回上面的文本,我们的框架

我们遇到了一个小问题,需要一些帮助——我们需要将一个存储过程中的多个结果集合并到一个结果集(这是Java报告框架的限制)。我们已经研究了Union等,但问题是存储过程resultset是多个交叉表结果,(1)每个resultset的列数未知,(2)每个resultset的列名未知

基本上,如果sp_u有3个结果,如:

身份证名称

1萨姆

2次

ID FName LName

约翰·雅各布

2次定时试验

3山姆·霍普金斯

身份证金额

1100

25000

理想的结果基本上是返回上面的文本,我们的框架将打印给用户。另外,请注意,这3-4个结果集彼此不相关

我们使用的是SQLServer2000和Java1.4

如有任何建议,将不胜感激

谢谢, SP

PS:如果上面的解释不是很清楚,另一种解释。 在SQL查询分析器中,如果我们有3条select语句:

从国家/地区选择*;{返回id、countryname、countrycode}

从人物中选择*;{id,countryname,countrycode}

从天平中选择*;{id,countryname,countrycode}

然后,结果将显示在三个单独的结果集框中。我们需要通过存储过程将这些结果集作为一个结果集返回(同时由于交叉表正在发生而不知道列的编号/名称)。
谢谢。

< P>你的问题没有指定你使用的是哪个数据库供应商,或者是哪个客户机应用程序框架,但是大多数带有存储的PROC的数据库都有能力返回多个结果集,以及我熟悉的几个客户机框架(VB6、C++、.NET等)。所有这些都能够从单个数据库访问中检索这些多个结果集,并对它们进行操作,以执行您可能需要的任何操作

根据您的评论,如果您的报告框架可以硬编码以生成列标题(firstName、lastName、amount等),而无需从数据库获取这些字符串,那么您可以执行以下操作:

  Select ID, Name as value1, null as value2
  From TableA 
    Union
  Select ID, FName as value1, LName as value2
  From TableB 
    Union
  Select ID, Cast(Amount as VarChar(20)) as value1, null as value2
  From TableC 

关键是每个select返回的列数必须相同(本例中为3列),它们的名称(别名)和数据类型也必须相同

如果来自不同表的ID是相关的,那么您的t-SQL应该是左连接。

Charles,谢谢。我已经用DB信息等更新了帖子。Charles,该应用程序使用的报告框架无法处理多个结果集,即如果一个sp有2-3条select语句,该框架将只显示第一条select语句中的值。不幸,但不可改变。有什么建议吗?