为什么我在SQL procedure里用游标遍历后,得到的返回的结果是N张一行的表不是一张表的N行数据?

如题所述

你可以用在游标处理时把每一行的数据写入一个表,再到C#调用这个表追问

请问你说的是临时表吗?带#的表名,我不知道它的生存周期是怎样的,我本想的是想select一样查询出来多行一张表的多行记录以供C#的winform使用,不知道这样一行为一个表的结果集还可不可用,

追答

可以用正式表,在存储过程加表的判断语句,如果表存在,删除重新建表

追问

可是系统本身已经很大,游标又缓慢,我只是想返回数据,再新建表的话增加数据库负担,而且我用完要删掉吗

追答

对啊,为什么用游标,在程序处理多好

其实主要处理时间在游标,一个表能有多大,你游标处理的不会有很多列吧

追问

我已经实现了,谢谢你~~

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-18
那要你用游标后调用的SQL是什么。追问

我本想的是想select一样查询出来多行一张表的多行记录以供C#的winform使用,不知道这样一行为一个表的结果集还可不可用

第2个回答  2014-12-18
要从你写的代码中找问题,把你的代码贴上来吧。追问

把游标遍历结果依次插入到临时表中,然后选择临时表中的数据,供C#的dataset使用,已经实现,谢谢~~

SQL 有句话叫 反行 (全称是返回行)是什么意思啊 ?
你一个查询语句完成后,显示的结果的(一共)10行,那么返回行就是10行。这里的一共很重要,比如一张表有50行,你select * from table,可能一次显示只有5行,那么他的返回行不是五行,而是50行,因为你所有的行数都满足,这50行都可以出现在显示结果中,所以这个就是返回行。一般来说这个没什么用...

Sql中的游标是干嘛的
游标提供了一种机制,使得开发者能够逐行遍历查询结果集,而不是一次性处理整个结果集。这在处理大量数据时特别有用,因为它可以减少内存的使用,并允许开发者在处理每一行数据时应用复杂的业务逻辑。在关系型数据库中,标准的SQL查询通常返回一个结果集,结果集可能包含多行数据。然而,标准的SQL语句并不...

我写了一个pl\/sql,主要是用游标遍历一张表.
1.检查一下游标C1中查询语句的执行计划,看看是不是耗时很多。10万数据并不多,而且你做了函数索引。所以我猜这个不是问题产生的原因;2.检查一下你的两层循环到底有多少次,是不是次数过多。目测不会超过10万吧。所以应该也不是问题关键;.以上两点可以通过使用plsql developer工具debug该过程时,点...

oracle 先用游标一行一行的读 把读出来的字段添加到另外一张表里面 怎...
Declare --从Table_a取出三个字段 Cursor Select_Table_a Is Select A.Column1, A.Column2, A.Column3 From Table_a;Begin --循环读取 For Ls_1 In Select_Table_a Loop --将读取的资料insert到Table_b中(字段的类型要一致)Insert Into Table_b (Column_B1, Column_B2, Column_B3)Values...

2个SQL语句返回的结果为何不同?
感觉(xmdm like "142%" and cddm like "14%")后面加上or语句后,此括号内的 and cddm like "14%" 未起作用;没有加上or后面的语句,返回结果是正确的;不知道为何会这样。请高人解答,谢谢 因第一条语句把 cddm 不是 14打头的都搜索出来了,因此用了第二条SQL语句(union),结果是符合要求了,但仍不明白...

求语句 SQL 查询出结果 然后再查询结果 得到结果中的结果
你的意思是吧itemid 一样的元素放到一个表?如果是你可以用游标试试

SQL语言中,SELECT语句的执行结果是 A.属性 B.表 C.元组 D.数据库_百...
确切的说是元组或者元组的集合。原因:select语句查询的结果先存在游标区里,再以集合的方式返回。元组(Tuple) 笛卡尔积中每一个元素(d1,d2,…,dn)叫作一个n元组(n-tuple)或简称元组。 元组是关系数据库中的基本概念,关系是一张表,表中的每行就是一个元组,每列就是一个属性。

这是一个SQL游标,为什么要在BEGIN和END里面再写一遍fetch next from m...
不然不会用到游标这个概念。Begin end是什么?Begin就是“{”,END就是“}”说到这了 你说为什么要写在{}里?如果不写,游标只停留在第一行,不是吗?好比什么呢?就好比 int i=0 while(i<100){ i++;这里是i循环,你的问题是提取数据的循环,意思是一样的 } } ...

怎么把下面的的sql语句查询出来的结果插入到一张新表中去 求大神...
我们既然写存储过程了,而且目的也只是唯一的,那么我们就可以考虑直接将所有步骤放在存储过程中来处理,没必要再拿出来单独考虑怎么用 另外给你一个方式,你看看用得上用不上--表 create table test (name varchar(50))go --动态sql添加数据 insert into test exec('select 1')go --存储过程 creat...

在SQL中统计一个字段 然后再更新到另一张表的一个字段
先用set 给变量赋值 然后再把变量update到表中 DECLARE @n int set @n=(select count(*) from 表 where 条件)UPDATE 表 SET 列 = @n WHERE 条件 其他的自己填进去吧

相似回答