高分求解:存储过程中能包含2个查询语句么?

ltxyxj 2008-07-01 07:46:00
如题,请高手指教。
...全文
323 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
ltxyxj 2008-07-04
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 brz97 的回复:]
多说一句,我只是按照楼主的思路提供解决办法而已

其实我觉得最好的解决方法是在数据库查询的时候就直接返回一张表不就行了嘛

select * from 表1,表2,表3//返回一张表,包括表1,表2,表3中的所有列
[/Quote]
你太有预见性了,昨天想了半天感觉也是再建一张表比较合适。
呵呵,我已经改过去了,接分~~~~~~~
brz97 2008-07-03
  • 打赏
  • 举报
回复
多说一句,我只是按照楼主的思路提供解决办法而已

其实我觉得最好的解决方法是在数据库查询的时候就直接返回一张表不就行了嘛

select * from 表1,表2,表3//返回一张表,包括表1,表2,表3中的所有列
brz97 2008-07-03
  • 打赏
  • 举报
回复
我又改善了一下,原来好像行数不同的确会出问题,现在好了

调用的时候DataTable newTable = Utils.Merge(你的表1,你的表2);


public class Utils
{
public static DataTable Merge(DataTable table1, DataTable table2)
{
DataTable table3 = new DataTable();
foreach (DataColumn c in table1.Columns)
{
table3.Columns.Add(c.ColumnName, c.DataType);
}
foreach (DataColumn c in table2.Columns)
{
table3.Columns.Add(c.ColumnName, c.DataType);
}

for (int i = 0; i < table1.Rows.Count || i < table2.Rows.Count; i++)
{
object[] o = table1.Rows.Count > i + 1 ? table1.Rows[i].ItemArray : new object[table1.Columns.Count];
object[] o2 = table2.Rows.Count > i + 1 ? table2.Rows[i].ItemArray : new object[table2.Columns.Count];
object[] o3 = new object[o.Length + o2.Length];
o.CopyTo(o3, 0);
o2.CopyTo(o3, o.Length);
table3.Rows.Add(o3);
}
return table3;
}
}

brz97 2008-07-03
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 ltxyxj 的回复:]
引用 34 楼 Novelty 的回复:
想要多少就有多少。

这是????
[/Quote]

我是举了个例子

例子里面的table1和table2是我自己new出来的,不是通过sql语句取到的
楼主可以帮他们当成是你从数据库中取出来的两个表就行了

行数不同没有关系,以table1和table2中行数多的为准,没有数据自动填充null
ltxyxj 2008-07-03
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 Novelty 的回复:]
想要多少就有多少。
[/Quote]
这是????
system_007 2008-07-03
  • 打赏
  • 举报
回复
up
Novelty 2008-07-03
  • 打赏
  • 举报
回复
想要多少就有多少。
ltxyxj 2008-07-03
  • 打赏
  • 举报
回复
我用的就是sqlserver
hongqi162 2008-07-03
  • 打赏
  • 举报
回复
sql server可以,oracle不可以
ltxyxj 2008-07-03
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 brz97 的回复:]
C# code
DataTable table1 = new DataTable();
table1.Columns.Add("a1");
table1.Columns.Add("a2");
table1.Columns.Add("a3");
table1.Columns.Add("a4");
table1.Columns.Add("a5");
table1.Columns.Add("a6");
table1.Rows.Add(new object[] { 1,2,3,4,5,6});
[/Quote]
这段代码是干什么的呢?是给table1附内容么?
如果我现在有三个存在的表,是不是这段就不用了?
还有一个疑问,如果三个表的结构和行数不一样,你的这个方法能用么?
JeffChung 2008-07-02
  • 打赏
  • 举报
回复
嗯,楼上都说完了
ltxyxj 2008-07-02
  • 打赏
  • 举报
回复
回复2楼,我就是想知道怎么将table[0],table[1]...付给水晶报表的数据源
ltxyxj 2008-07-02
  • 打赏
  • 举报
回复
怎么作呢?请指点一二啊
535cheng110 2008-07-02
  • 打赏
  • 举报
回复
keyi
ltxyxj 2008-07-02
  • 打赏
  • 举报
回复
如果我有三个查询语句,是不是在dataset里就相应的有三个表,我可以把这三个表一块付给水晶报表的数据源么?
「已注销」 2008-07-02
  • 打赏
  • 举报
回复
可以使用多个查询语句,
返回的是多个DataSet而不是多个DataTable
jaredzeng 2008-07-02
  • 打赏
  • 举报
回复
可以的
yyj135 2008-07-02
  • 打赏
  • 举报
回复
可以包含多条Select语句。你可以返回一个DataSet,假设存储过程如下:

...
SELECT * FROM T1
PRINT 'Hello'
SELECT * FROM T2
SELECT * FROM T3

如果要读取条二条SELECT语句的返回结果,则用:
DataSet.Tables[1]表示即可。
你自己可以试一下
伴老思源 2008-07-02
  • 打赏
  • 举报
回复
没有问题,但程序中应设置返回的是DataSet
brz97 2008-07-02
  • 打赏
  • 举报
回复
上面这段代码没用,楼主请自行去掉

DataColumn[] columns = new DataColumn[table1.Columns.Count + table2.Columns.Count];
table1.Columns.CopyTo(columns,0);
table2.Columns.CopyTo(columns, table1.Columns.Count);

加载更多回复(20)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧