PB游标使用问题 [问题点数:20分]

Bbs1
本版专家分:0
结帖率 88.89%
Bbs3
本版专家分:865
Bbs1
本版专家分:0
Bbs3
本版专家分:567
Bbs4
本版专家分:1168
Bbs2
本版专家分:242
Bbs5
本版专家分:2327
Bbs5
本版专家分:2327
PB 游标问题
读取数据,并对数据进行归一化,然后用模糊综合评判法进行计算得出总评值,代码如下:rnrnstring qz[]rnstring ls_cln[]rninteger k,i,j,li_count,li_rowcount,lxrndecimal3 fij,fimax,fimin,uij,qzkrndecimal count,count1,count2rnli_rowcount=dw_2.rowcount() //获取dw_2总的行数rnli_count= integer(dw_2.object.datawindow.column.count) //获取dw_2总的列数rnk=1 //k为读取指标类型及指标权重的循环变量rnj=3 //j为dw_1读取分值的列变量rnfor i=1 to li_rowcount rndeclare qz cursor for select qz from index order by bh using sqlca;rnopen qz;rnfetch qz into :qz[k];rnfimax=0 //给最大值赋初值为0rnfimin=100 //给最小值赋初值为100(分值的输入要求输入的分数在0-100之间)rncount1=0 //用于求和rndo while sqlca.sqlcode=0rn qzk=integer(qz[k]) rn fij=dec(dw_2.GetItemstring(j,"")) //取dw_2中(i,j)的值(除第1,2列)rn //ls_cln[i]=dw_pjb.describe("#" + string(i) + ".Name") //曾用于取dw_2中(i,j)值的另一条语句rn fimax=max(fij,fimax) rn fimin=min(fij,fimin)rn lx=integer(dw_1.GetItemstring(k,"类型")) //读取zb表中“类型”的值rn if lx=1 thenrn uij=(fij/(fimax+fimin))^2rnelseif lx=2 thenrn uij=1 - ((fij/(fimax+fimin))^2) //判断,因为“类型”字段中的值设置为只能为1或2rnend ifrn count2=qzk*uij //qzk指标权重,uij为读取到dw_2中(i,j)的值经过归一化处理的值,二者相乘rn count1=count1+count2 //求和,两式一起代表先相乘后求和rn k=k+1rn j=j+1rn//fetch qz into qz[k]; //此语句可用时,显示“Syntax error”rnlooprnclose qz;rncount=100*count1 //count为最后的计算了每个学生全部指标的后的分值,乘上100%rndw_2.setitem(i,"总评",count) //返回值给dw_2中的“总评”rnend forrncommit using sqlca;rnrnrnrn保存时显示:rnDatabase C0038: SQLSTATE = 37000[Sybase][ODBC Driver][Adaptive Server Anywhere]Syntax error or access violation: near 'index' in qz from [index] order by bhrnrn求高手指点!
PB游标问题
DECLARE P_SQ CURSOR FORrnselect a.dt_ut_sq, a.no_mo_ut_sq, a.st_cur_ut_pcsg,rn a.st_las_ut_pcsg, a.no_mo, a.no_rtg_sq, a.cd_las_ut, b.cd_pd_sbcrn from a, brn where a.no_mo = b.no_morn and a.cd_ut = '11'rn and a.st_cur_ut_pcsg = 'S'rn and a.dt_ut_sq rnrnOPEN P_SQ;rnFOR i = 1 TO @cntrn FETCH P_SQ INTO @dt_ut_sq, @no_mo_ut_sq, @st_cur_ut_pcsg, @st_las_ut_pcsg,@no_mo, @no_rtg_sq, @cd_las_ut, @cd_pd_sbc;rnrn /其他语句快 /rnrnNEXTrnrnCLOSE P_SQ;rnrnrn我的<em>问题</em>是不是这样,在PB里面<em>使用</em><em>游标</em>的时候,,可以用两个SQL连接在一起.这样写是什么意思..我原来的理解一直认为是两个SQL要连接在一起必须用UNION ,并且列数相等,但这边既没有<em>使用</em>UNION 又没有相同的列数,想不通,请高手指教...rn
pb 游标问题
我是初学者,请各位大侠多给指点!!rnrn<em>pb</em> 中<em>游标</em>如何实现对数据的查询/删除!!并把结果反应的数据窗口中!!rnrn谢谢了,请指教!!rn
急,pb使用游标
我有一个表,有时间字段和编号字段,我想修改时间为‘2004-02-05’的所有记录,修改的是编号字段,每个编号是不同的,应该如何做?希望快点回答,谢谢!!
PB游标编程套路
String ls_temp1 String ls_temp2 declare cur_name CURSOR FOR  select field1,field2 from tablename where condition OPEN cur_name; FETCH cur_name INTO :ls_temp1,:ls_temp2; do while sqlca.sqlco
PB总结——游标,Datastore和存储过程的调用
<em>使用</em><em>游标</em> string     cur_name                         declare cur_name cursor for             select from where ;         open     cur_name ;   do while sqlca.sqlcode=0        fetch     cur_name
PB中的游标问题
我用的ODBC连Access数据库,用<em>游标</em>取数据:rndeclare xjk_cur cursor for select clda.车辆牌照号 from clda using sqlca;rnopen xjk_cur;rnopen xjk_cur;rnmessagebox('',sqlca.sqlerrtext)rnsle_1.text=sqlca.sqlerrtextrnfetch xjk_cur into :carnum;rnmessagebox('',sqlca.sqlerrtext)rn则第一个messagebox框提示:rnSQLSTATE = S1C00rn[Microsoft][ODBC Microsoft Access Driver]可选的功能未实现 rn第二个messagebox框提示:rncursor is not open.rn提问高手,这是为什么,难到是Access不支持PB<em>游标</em>!!!!rn
pb oracle 游标问题
为什么我的<em>游标</em>总是只取第一行rn用sqlcode = 0 判断循环的话,取完第一行之后sqlcode就等于-1了rn改称用记录数来循环的话,就总是取第一行rn之前一直都是用sqlcode写的,都没<em>问题</em>,这次不知道怎么回事,中间语句没有commit,只有查询rn真搞不懂<em>pb</em>了rn请高手指点一下rn[code=SQL]rn// 定义<em>游标</em>rndeclare c_tsa122 cursor forrnselect ddzxh,pm,substr(gz,1,2) gz ,substr(gz,3,2) bmjg,zzs,gdhd,kd,cd,hsdjrnfrom tsa122rnwhere ddh = :as_ddhrnorder by ddzxh;rnrn// 取<em>游标</em>的第一条记录rnopen c_tsa122;rnfetch c_tsa122 rninto :ls_ddzxh,:ls_pm,:ls_gz,:ls_bmjg,:ls_zzs,:ld_gdhd,:ld_kd,:ld_cd,:ld_hsdj;rnrn// 打开循环rndo while sqlca.sqlcode = 0rn setnull(ls_xh)rn // 获取该条件下的基价(品名,材质,厚度)rn select jgxh,jgrn into :ls_xh,:ld_jgrn from tsa160rn where pm = :ls_pm andrn gz = :ls_gz andrn gdhd = :ld_gdhd andrn bmjg is null andrn zzs is null andrn kd is null andrn cd is null;rn rn if f_nul(ls_xh,'') <> '' then ls_jgxh = ls_xhrn rn setnull(ls_xh)rn // 获取该条件下的基价(品名,材质,厚度,表面结构)rn select jgxh,jgrn into :ls_xh,:ld_jgrn from tsa160rn where pm = :ls_pm andrn gz = :ls_gz andrn gdhd = :ld_gdhd andrn bmjg = :ls_bmjg andrn zzs is null andrn kd is null andrn cd is null;rn rn if f_nul(ls_xh,'') <> '' then ls_jgxh = ls_xhrn rn setnull(ls_xh)rn // 获取该条件下的基价(品名,材质,厚度,表面结构,制造商)rn select jgxh,jgrn into :ls_xh,:ld_jgrn from tsa160rn where pm = :ls_pm andrn gz = :ls_gz andrn gdhd = :ld_gdhd andrn bmjg = :ls_bmjg andrn zzs = :ls_zzs andrn kd is null andrn cd is null;rn rn if f_nul(ls_xh,'') <> '' then ls_jgxh = ls_xh rn rn setnull(ls_xh)rn // 获取该条件下的基价(品名,材质,厚度,表面结构,制造商,宽度)rn select jgxh,jgrn into :ls_xh,:ld_jgrn from tsa160rn where pm = :ls_pm andrn gz = :ls_gz andrn gdhd = :ld_gdhd andrn bmjg = :ls_bmjg andrn zzs = :ls_zzs andrn kd = :ld_kd andrn cd is null;rn rn if f_nul(ls_xh,'') <> '' then ls_jgxh = ls_xh rn rn setnull(ls_xh)rn // 获取该条件下的基价(品名,材质,厚度,表面结构,制造商,宽度,长度)rn select jgxh,jgrn into :ls_xh,:ld_jgrn from tsa160rn where pm = :ls_pm andrn gz = :ls_gz andrn gdhd = :ld_gdhd andrn bmjg = :ls_bmjg andrn zzs = :ls_zzs andrn kd = :ld_kd andrn cd = :ld_cd;rn rn if f_nul(ls_xh,'') <> '' then ls_jgxh = ls_xh rn rn // 若基价表中没有对应的价格记录则直接记录该定单子项号并跳出本次循环rn if f_nul(ls_jgxh,'') = '' thenrn ls_msg += '[' + ls_ddzxh + '],'rn elsern // 计算出最低价格rn ld_zdjg = ld_jg - f_nul(ld_jgfd,0)/1000rn rn // 验证定单子项中含税单价rn if ld_hsdj < ld_zdjg thenrn ls_msg += '[' + ls_ddzxh + '],'rn end ifrn end ifrn rn // 取<em>游标</em>的下一条记录rn fetch c_tsa122 rn into :ls_ddzxh,:ls_pm,:ls_gz,:ls_zzs,:ld_gdhd,:ld_kd,:ld_cd,:ld_hsdj;rnlooprnrn// 关闭<em>游标</em> close c_tsa122;rn[/code]rnrn顺便说一下,就是把中间的代码都去掉,只留fetch语句都还是出错,sqlcode还是等于-1
急用pb使用游标
我在<em>pb</em>60中的脚本中直接<em>使用</em>下面语句可以执行:rndeclare emp cursor for select * from q_sale_room_send;rnopen emp;rnfetch emp into :ll_code, :ll_name,:ll_car,:ll_class,:ll_engine,:ll_unit,:ll_base,:ll_post,:ll_remark,rn :ll_refer_price,:ll_amount,:ll_come_price,:ll_sale,:ll_void,:ll_id,:ll_no,rn :ll_date,:ll_for_base,:ll_pay,:ll_sale_remark,:ll_cat,:ll_special,:ll_zk,rn :ll_member,:ll_type,:ll_sendman,:ll_getman,:ll_sid,:ll_exit,:ll_check;rndo while sqlca.sqlcode=0rn ll_newid++rn insert into q_sale_room rn values(:ll_code, :ll_name,:ll_car,:ll_class,:ll_engine,:ll_unit,:ll_base,:ll_post,:ll_remark,rn :ll_refer_price,:ll_amount,:ll_come_price,:ll_sale,:ll_void,:ll_id,:ll_no,rn :ll_date,:ll_for_base,:ll_pay,:ll_sale_remark,:ll_cat,:ll_special,:ll_zk,rn :ll_member,:ll_type,:ll_sendman,:ll_getman,:ll_newid,:ll_exit,:ll_check) using sqlca1;rnrn select room_amount into :ll_room from q_save_room where id=:ll_id using sqlca1; rn ll_sum=ll_room - ll_amountrn update q_save_room set room_amount=:ll_sum,modify_date=:ll_date where id=:ll_id using sqlca1;rnrn fetch emp into :ll_code, :ll_name,:ll_car,:ll_class,:ll_engine,:ll_unit,:ll_base,:ll_post,:ll_remark,rn :ll_refer_price,:ll_amount,:ll_come_price,:ll_sale,:ll_void,:ll_id,:ll_no,rn :ll_date,:ll_for_base,:ll_pay,:ll_sale_remark,:ll_cat,:ll_special,:ll_zk,rn :ll_member,:ll_type,:ll_sendman,:ll_getman,:ll_sid,:ll_exit,:ll_check;rnlooprnrnclose emp;rnrnif sqlca.sqlcode=0 thenrn commit using sqlca;rnelsern messagebox('失败',sqlca.sqlerrtext)rn rollback using sqlca;rn returnrnend if rn而在PB90中却出错提示为: rnprocedure has not been executed or has no resultsrnrnrnrn请问那问高手在<em>pb</em>90中怎样<em>使用</em><em>游标</em>?希望能给个例子rnrn
PB脚本游标 新的问题
rnDECLARE YPKC_cur CURSOR FORrn SELECT KCSL,MRDJ,PFDJ,LSDJ,PH,SCCJ,YXQ,RKDH,RKXLH,GMP,QS,IFZB,ZL,GMPXJ,NOGMPXJrn FROM YK_YPKCrn WHERE YKH = :gl_ykdm AND YPDM = :YPDM AND KCSL > 0 AND itempkg_id = :ls_itempkg_idrn Order By YXQ,RKRQ; rnOPEN YPKC_cur;rnFETCH YPKC_cur INTO :KCSL,:MRDJ,:PFDJ,:LSDJ,:PH,:SCCJ,:YXQ,:RKDH,:RKXLH,:GMP,:QS,:IFZB,:ZL,:XJ1,:XJ2;rn DO WHILE sl > 0rn ......rnFETCH NEXT YPKC_cur rn INTO :KCSL,:MRDJ,:PFDJ,:LSDJ,:PH,:SCCJ,:YXQ,:RKDH,:RKXLH,:GMP,:QS,:IFZB,:ZL,:XJ1,:XJ2;rnLOOPrnCLOSE YPKC_cur; rnrn以上是原来的<em>游标</em>。rnrnrn现在我想让如果全局变量gs_li=1时rnSELECT KCSL,MRDJ,PFDJ,LSDJ,PH,SCCJ,YXQ,RKDH,RKXLH,GMP,QS,IFZB,ZL,GMPXJ,NOGMPXJrn FROM YK_YPKCTJrn WHERE YKH = :gl_ykdm AND YPDM = :YPDM AND KCSL > 0rn否则取别外一个表的信息。rn由于do while里的内容太多,我想 OPEN YPKC_cur;rnFETCH YPKC_cur INTO :KCSL,:MRDJ,:PFDJ,:LSDJ,:PH,:SCCJ,:YXQ,:RKDH,:RKXLH,:GMP,:QS,:IFZB,:ZL,:XJ1,:XJ2;rn DO WHILE sl > 0rn ......rnFETCH NEXT YPKC_cur rn INTO :KCSL,:MRDJ,:PFDJ,:LSDJ,:PH,:SCCJ,:YXQ,:RKDH,:RKXLH,:GMP,:QS,:IFZB,:ZL,:XJ1,:XJ2;rnLOOPrnCLOSE YPKC_cur; 这些内容不变的情况下更新一下<em>游标</em>的写法。rn但if判断不行。两种IF方法都不行。怎么办呢??rn
请教高手PB游标问题
DECLARE @STR VARCHAR(2000)rnSELECT @STR =ISNULL(@STR,'') + [lo]+'/' FROM tbl_lo rnSELECT @STRrnrn以上在SQL2000运行下常,菜鸟在此请教各路高手,如何将以上语句改为在PB中运行,多谢!
pb中的游标
在<em>pb</em>中写的<em>游标</em>,我想动态的选择数据表,怎麽实现呢rn我将表名放在一个变量中,想在select id from 表名(用变量替换);能够实现吗,请各位高手指点
PB动态SQL游标嵌套
如题,PB里面针对有返回值的动态SQL能进行<em>游标</em>嵌套吗,如果可以应该怎么写,都是declare xxx dynamic cursor for sqlsa吗?
怎样在PB的递归函数中使用游标
在PB中自定义递归函数,函数中要<em>使用</em><em>游标</em>,每次运行此函数时都会出错(<em>游标</em>已经打开),请问各位大虾,在PB的自定义递归函数中怎样才能<em>使用</em><em>游标</em>?
PB游标为什么出错
string ls_number //定义变量 rn //定义<em>游标</em> rn Declare pingpai CURSOR FOR rn Select pingpai_date from xiala_pingpai_date rn For READ ONLYrn ; rn //打开<em>游标</em> rn Open pingpai; rn // 循环从<em>游标</em>中提取值 rn rn rn While SQLCA.SqlCode = 100rn rn Fetch pingpai Into :ls_number; rn ddlb_1.AddItem(ls_number) //往下拉列表框中添加值 rn rn Close pingpai; //释放<em>游标</em> rnrnrnrn为什么 While SQLCA.SqlCode = 100 提示我错误呀,想不通rnrnrnWhile SQLCA.SqlCode = 100 错了吗,没有错呀
游标_使用简单的游标
本课程基于微软新的SQL Server 2016,讲解了数据完整性、视图、索引、存储过程、流程控制、<em>游标</em>、事务、函数、触发器等技术;n本课程将分为四个部分:基本操作与查询、查询、数据库编程、数据库管理,由浅入深的讲解SQL Server 2016技术体系,本课程是数据库编程。n欢迎各位学员加群431277381,一起交流学习。
SQL2000 游标使用问题
想将Ms_PreferredPayment表中cCashCode为指定值的行的cCheckCode字段的值计算出来,所以做了一个函数,检查语法时出现错误如下:rnrn服务器: 消息 444,级别 16,状态 2,过程 MS_PreferredCheckCode,行 20rn函数中含有的 SELECT 语句无法向客户端返回数据。rnrn不知道错在哪里,请各位帮忙啊rnrnrnCREATE FUNCTION MS_PreferredCheckCode(@cCashCode AS varchar(12))rnRETURNS varchar rnAS rnBEGIN rn DECLARE @cCheckCode varcharrn If Not Exists (Select * from Ms_PreferredPayment Where cCashCode=@cCashCode)rn Set @cCheckCode=nullrn Elsern Set @cCheckCode=''rn Beginrn Declare @tmpCheckCode varcharrn Declare Mycursor cursor for select cCheckCode from Ms_PreferredPayment where cCashCode=@cCashCode --为所获得的数据集指定<em>游标</em>rn Open Mycursor --打开<em>游标</em>rn Fetch next from Mycursor into @tmpCheckCode --开始抓数据rn WHILE @@FETCH_STATUS = 0 --这时才可以检查@@fetch_status的值,=0表示成功,这里是一个循环rn Set @cCheckCode=@cCheckCode+';'+@tmpCheckCodern FETCH NEXT FROM mycursor --这里的fetch语句被循环执行。rn Close mycursor --关闭<em>游标</em>rn Deallocate mycursor --删除<em>游标</em>rn Endrnrn RETURN @cCheckCodernENDrnGO
使用游标问题
为什么我<em>使用</em>的时候会多找一条数据呀rn我数据库中只有9个数据 他为什么取出十个数据呀 rn有一个重复的数据。怎么会是这样呢
游标使用问题
declare @zdhm varchar(50)rnset @zdhm='zd00047' --更改单引号中的制单号码rndeclare tb cursor forrnSelect name from sysobjects Where xtype='U'rndeclare @name sysnamernopen tbrnfetch next from tb into @namernwhile @@fetch_status=0rnbeginrndelete from @name where zdhm=@zdhmrnfetch next from tb into @namernendrnclose tbrndeallocate tbrnrn错误提示如下rn服务器: 消息 137,级别 15,状态 2,行 10rn必须声明变量 '@name'。rnrn我不是已声明变量了么,请问怎样解决,谢谢!
游标使用带来的问题
如题,下面是一段代码(报语法错),最后一句(@i=@i+1)不加上可以正常运行,不过我是在循环内处理的,所以必须要用到此变量rndeclare @i intrndeclare @id varchar(20)rndeclare @name varchar(20)rndeclare #insert cursor forrn select id,name from student_infornopen #insertrnfetch next from #insert into @id,@namernwhile @@fetch_status=0 rnbeginrn insert into temp1(id,name,age) values (@id,@name,0)rn fetch next from #insert into @id,@namernendrnclose #insertrn@i=@i+1
游标使用问题
我<em>使用</em><em>游标</em>查询记录 rnint jshrn declare jiaoshi_cur cursor forrn select *rn from jsbrn ..........rnopen .....rnfetch .....rn怎样才能把记录显示到数据控件中rnrn
游标使用问题
晚辈rn初学<em>游标</em>的<em>使用</em>,不知道下面代码有何<em>问题</em>,而不能执行!rn求助给为大侠!rn__________________________________________________________________________________________rn学生信息表:rn学号|专业校内码|部门代码rn__________________________________________________________________________________________rn<em>问题</em>是这样:我需要取专业代码的前两位数字作为部门代码.rn就是用SUBSTRING(专业代码,1,2)的结果来UPDATE部门代码!rn如:rn40312058|1102|NULLrn执行我写的存储过程之后记录变成rn40312058|1102|11rn__________________________________________________________________________________________rn我编写的代码如下:rnDECLARE stu_did CURSOR FOR SELECT 学号, SUBSTRING(专业校内码, 1, 2) rn AS 学院代码rn FROM 学生信息表rn ORDER BY 学号rnOPEN stu_did rnrnFETCH NEXT FROM stu_did rnrnWHILE (@@FETCH_STATUS = 0) rnBEGINrn UPDATE 学生信息表 SET 部门代码 = stu_did.学院代码rn WHERE 学号 = stu_did.学号rnFETCH NEXT FROM stu_didrnENDrnrnCLOSE stu_did rnDEALLOCATE stu_didrn__________________________________________________________________________________________rn运行时出现这样的错误:rn列前缀stu_did与查询中所用的表名或别名不匹配!rn__________________________________________________________________________________________rn请各位大侠帮忙啊!!!
ADO 使用游标问题
默认的ADO连接<em>游标</em>不支持MOVELASTrn在对记录集进行MOVELAST的时候出现错误rnrn谁给一段让记录集支持MOVELAST的代码?谢谢
游标嵌套使用问题
create or replace procedure MULTIPLE_CURSORS_PROC isrn v_owner varchar2(40);rn v_table_name varchar2(40);rn v_column_name varchar2(100);rnrn /* First cursor */rn cursor get_tables isrn select distinct tbl.owner, tbl.table_namern from all_tables tblrn where tbl.owner = 'SYSTEM';rnrn /* Second cursor */rn cursor get_columns isrn select distinct col.column_namern from all_tab_columns colrn where col.owner = v_ownerrn and col.table_name = v_table_name;rnrn beginrnrn -- Open first cursorrn open get_tables;rn looprn fetch get_tables into v_owner, v_table_name;rnrn open get_columns;rn looprn fetch get_columns into v_column_name;rnrn end loop;rn close get_columns;rnrn end loop;rn close get_tables;rnrnEXCEPTIONrnWHEN OTHERS THENrn raise_application_error(-20001,'An error was encountered - '||SQLCODE||' -ERROR- '||SQLERRM);rnend MULTIPLE_CURSORS_PROC;rnrnrn没有发现哪里相关 很不好理解。我的理解是这样的:rn首先获得all_tables中owner='SYSTEM'的子集,存入v_owner,v_table_name;rn接着获取,接着循环抓取all_tab_columns里的若owner=all_tables.owner并且table_name=all_tables_name则column_name存入v_column_name中,是不是这样的解的,还有上面的rnDISTINCT,select distinct tbl.owner, tbl.table_namern from all_tables tblrn where tbl.owner = 'SYSTEM';rn是要求tbl.owner与tbl.table_name同时DISTINCT吗?即:rn用下面的语句:rnSELECT distinct tbl.owner,tbl.table_name from tbl;rnrnrntable.owner tbl.table_namern A A1rn A A2rn B B1rn B A1rnrn这样四个是不是会全部选出来?rnrnrn rnrn
SQL游标使用问题
题目是这样的rn查询热门图书(被借次数在前5位)的图书编号、图书名称、被借次数,rn以及借过此书的学生姓名(读者列表)。要求多个学生中间用“、”隔开,若某rn学生多次借阅此书,不要重复显示,读者列表中学生的排列顺序按照借阅此书rn次数从大到小排序,此书次数一样多的按照姓名的拼音从小到大排序。(以网格的形式显示)rnrn有三张表,book(bookID,title,author),borrow(borrowID,stuID,bookID,borrowTime,returnTime),rnstuent(stuID,stuName,major).rn请高手赐教。老师说用<em>游标</em>。
使用游标效率问题
主表有100万记录左右 方案明细表 t1rnID share(份数) scheme(方案号) username(用户名) UMoney(用户本记录可以得金额)rn1 2 S001 a 0rn2 3 S001 b 0rn3 5 S001 a 0rn4 6 S002 c 0rn5 3 S002 d 0rnrn一个方案类的记录几条到几百条不等rnrn会员表 m1rnUsername(用户名) TMoney(用户金额)rna 100rnb 80rnrn如果方案 S001 利润100 每份利润10rn rn存取过程中用,<em>游标</em>读取 t1 一个方案类的S001数据 rn更新会员表(m1) TMonty=share*10rn更新方案表(t1) UMoney=share*10rnrn我想问的是,在存取过程中用<em>游标</em>直接读取一个方案表数据速度快,还是先在存取过程中建临时表,再在<em>游标</em>中读临时表速度快。rnrn要不就是不用<em>游标</em>,用 函数 效率更好 用函数怎么写了??麻烦了rnrnrn
使用游标计算问题
Create proc SumIntegral rnas rn delete from TeamScorernrn declare score_cur cursorrn for select group1,team1,team2,goalsfor1,goalsfor2 from MatchRecordrn declare @group varchar(10),@team1 varchar(20),@team2 varchar(20),rn @goals1 int,@goals2 int,@tmp1 varchar(20),@tmp2 varchar(20)rn rn open score_currn fetch next from score_cur into @group,@team1,@team2,@goals1,@goals2rn while(@@Fetch_status=0)rn begin rn [color=#FF0000]if exists(select * from TeamScore rn where team1=@team1 and group1=@group) rn and exists(select * from TeamScore rn where team1=@team2 and group1=@group) [/color]rnrn begin rn if(@goals1>@goals2) --计算获胜球队team1rn beginrn update TeamScore set win=win+1,goalsfor=goalsfor+@goals1,rn completed=completed+1,rn goalsagainst=goalsagainst+@goals2,rn score=score+3rn where group1=@group and team1=@team1rn rn update TeamScore set loss=loss+1,goalsfor=goalsfor+@goals2,rn completed=completed+1,rn goalsagainst=goalsagainst+@goals1,rn score=score+0rn where group1=@group and team1=@team2rn endrnrn else if(@goals1=@goals2) --计算平局rn beginrn update TeamScore set tie=tie+1,goalsfor=goalsfor+@goals1,rn completed=completed+1,rn goalsagainst=goalsagainst+@goals2,rn score=score+1rn where group1=@group and team1=@team1rn rn update TeamScore set tie=tie+1,goalsfor=goalsfor+@goals2,rn completed=completed+1,rn goalsagainst=goalsagainst+@goals1,rn score=score+1rn where group1=@group and team1=@team2rn endrnrn else --计算获胜球队team2rn beginrn update TeamScore set loss=loss+1,goalsfor=goalsfor+@goals1,rn completed=completed+1,rn goalsagainst=goalsagainst+@goals2,rn score=score+0rn where group1=@group and team1=@team1rn rn update TeamScore set win=win+1,goalsfor=goalsfor+@goals2,rn completed=completed+1,rn goalsagainst=goalsagainst+@goals1,rn score=score+3rn where group1=@group and team1=@team2rn endrn -- end rn elsern beginrn if(@goals1>@goals2) --计算获胜球队team1rn beginrn insert into TeamScore(group1,team1,completed,win,goalsfor,rn goalsagainst,score)rn values(@group,@team1,1,1,@goals1,@goals2,3)rnrn insert into TeamScore(group1,team1,completed,loss,goalsfor,rn goalsagainst,score)rn values(@group,@team2,1,1,@goals2,@goals1,0)rn endrnrn else if(@goals1=@goals2) --计算平局rn beginrn insert into TeamScore(group1,team1,completed,tie,goalsfor,rn goalsagainst,score)rn values(@group,@team1,1,1,@goals1,@goals2,1)rnrn insert into TeamScore(group1,team1,completed,tie,goalsfor,rn goalsagainst,score)rn values(@group,@team2,1,1,@goals2,@goals1,1)rn endrn rn else rn beginrn insert into TeamScore(group1,team1,completed,loss,goalsfor,rn goalsagainst,score)rn values(@group,@team1,1,1,@goals1,@goals2,0)rnrn insert into TeamScore(group1,team1,completed,win,goalsfor,rn goalsagainst,score)rn values(@group,@team2,1,1,@goals2,@goals1,3) rn endrn end rn fetch next from score_cur into @group,@team1,@team2,@goals1,@goals2rn endrnrnclose score_currndeallocate score_cur rn我想在存储过程中<em>使用</em><em>游标</em>计算出每支参赛足球队的积分与进胜球情况,但是在红色标记的地方无法判断两支球队同时存在,而且执行存储过程后还得到重复插入的信息
SQL中游标嵌套游标使用问题
各位大侠:rn 救命啊!小弟昨天在写程序的时候遇到了一个大难题,希望各位大侠能多多指点!我在程序中想通过<em>游标</em>从数据表中依次取出三个数据然后对他们进行比较。我的想法如下:1.先通过<em>游标</em>中数据表中取出第一个数据A;2.然后再通过<em>游标</em>从数据表中取出第二个数据B,并将它和A进行比较,3.如果第2步中的比较符合要求,再通过<em>游标</em>从数据表中取出第三个数据C,再将C和第2步中数值比较大的进行比较,如果比较结果符合要求就将A和C插入数据表中;4.通过<em>游标</em>取下一个数值重复步骤1到3直到将所有的数据全部取出rn5.结束循环,释放<em>游标</em>。rn刚才说了那么多大家可能还不知道我具体要做什么,小弟下面就将源代码贴出来,希望各位大侠多多指点下:rnCREATE TABLE test_table(rn begin_time datetime,rn end_time datetime,rn limite_num int,rn max_nume intrn)rnrnrndeclare @limite_num intrndeclare @setlimite_num intrndeclare @changetime2 datetimerndeclare @changetime1 datetimerndeclare @savetime1 datetimerndeclare @savetime2 datetimerndeclare @beginTime varchar(19) --开始年月 rndeclare @endTime varchar(19) rnselect @setlimite_num = largenume from colliery_infornset @beginTime='2008/11/5 00:00:00'rnset @endTime ='2008/11/13 23:00:00' rnrndeclare chk_data_cursor cursor for select distinct tm FROM limite_tablern WHERE station_code = 0 and tm >= @beginTime AND tm <> 0rn beginrn close chk_data_cursorrn deallocate chk_data_cursorrn returnrn endrnelsernbeginrn fetch next from chk_data_cursor into @changetime1rnendrnrnWHILE @@FETCH_STATUS = 0rn BEGIN rn if DATEDIFF(second,@changetime2,@changetime1)> =30rn beginrn set @savetime1=@changetime2rn set @changetime2 = @changetime1rn fetch next from chk_data_cursor into @changetime1rn if @@fetch_status = 0rn rn beginrn rnrn if DATEDIFF(second,@changetime2,@changetime1)< 30rn set @savetime2=@changetime1rn rn select @limite_num= max(people_num) FROM limite_tablern WHERE station_code = 0 and tm >= @changetime2 AND tm =30rn beginrn set @savetime1=@changetime2rn这几条语句后似乎没执行rnset @changetime2 = @changetime1rn fetch next from chk_data_cursor into @changetime1rn if @@fetch_status = 0rn rn beginrn rnrn if DATEDIFF(second,@changetime2,@changetime1)< 30rn set @savetime2=@changetime1rn这几条语句了,而直接执行rnselect @limite_num= max(people_num) FROM limite_tablern WHERE station_code = 0 and tm >= @changetime2 AND tm <= @changetime1 and flag = 0rn rn --添加这条记录rn insert into test_table(begin_time, end_time, limite_num, max_nume) values(@savetime1, @savetime2, @setlimite_num,@limite_num)rn这几条语句了。rn希望各位大侠能提供点意见,小弟将感激不尽!
请教,pb对ACCESS使用游标访问的问题
DECLARE mycur CURSOR FORrn SELECT bxg.gh,bxg.adduprn FROM bxg;rnrnopen mycur;rnrni=0rnfetch mycur into :temp_gh,:temp_addup;rndo while (sqlca.sqlcode = 0)rn i++rn insert into lab_collect values (:i,:temp_gh,:temp_addup);rnfetch mycur into :temp_yearday,:temp_bm,:temp_xz,:temp_gh,:temp_addup;rnlooprnclose mycur;rnrn请教各位大侠,这段<em>使用</em>有何<em>问题</em>,为什么系统说“cursor is not open”
关于PB游标跳出循环sqlca.sqlcode的问题
<em>使用</em><em>游标</em>跳出循环用 sqlca.sqlcode <> 100 可是到了数据结尾无法跳出,应该如何做?rn程序如下:rndeclare c2 cursor forrnselect ct_ywbh from wzn_dhjl_m where to_char(dt_dsj,'yyyy/mm') = :st_sj and ct_gysbm = :st_gysbm order by ct_ywbh;rnopen c2;rn do while sqlca.sqlcode<>100 //这里应该用什么条件才能在<em>游标</em>的最后一条数据跳出?rn fetch c2 into :st_ywbh;rn select sum(am_jk) into :i_jhfk from wzn_dhjl_d where ct_ywbh = :st_ywbh;rn i_jhfk_hj = i_jhfk_hj + i_jhfkrn looprnclose c2;rnrn我试过sqlca.sqlcode<>100, sqlca.sqlcode=0 都不行。
请教,关于PB的游标程序
请教,关于PB的<em>游标</em>程序。rndeclare c1 cursor for select name from tariff ;rnmessagebox("信息",sqlca.sqlcode)rni=1rnopen c1;rn fetch c1 into :xmmc;rnmessagebox("信息",sqlca.sqlcode)rn do while sqlca.sqlcode = 0rn w_input.xm_1.additem(xmmc)rn i=i+1rn fetch c1 into :xmmc;rn looprnclose c1;rn第一个SQLCODE为0rn第一个SQLCODE为-1rn表中有记录,字段名没错。rn请问为什么会报-1错误呢?
oracle存储过程:游标使用,多重游标
oracle<em>游标</em>
oracle声明游标使用游标
/* ||<em>使用</em><em>游标</em>便利员工工资 */ declare  ----声明一个变量接收员工工资 v_sal  emp.sal%type; ----声明一个变量接收员工编号 v_ename emp.ename%type; ----声明一个<em>游标</em> cursor  cur_name                 is           select  ename,sal  from
游标_在存储过程中使用游标
本课程基于微软新的SQL Server 2016,讲解了数据完整性、视图、索引、存储过程、流程控制、<em>游标</em>、事务、函数、触发器等技术;n本课程将分为四个部分:基本操作与查询、查询、数据库编程、数据库管理,由浅入深的讲解SQL Server 2016技术体系,本课程是数据库编程。n欢迎各位学员加群431277381,一起交流学习。
游标使用
use yqcz; --=======把字符串转换成类数组方法, begin declare @arr varchar(50),@i int ,@arrAt char(50),@subArr varchar(100),@subArrIndexValue varchar(100) -- declare @fzhsCursor cursor declare @indexCur...
使用游标
rn rnrnrn rn 大数据一卡通!可学赵强老师(Oracle认证讲师)全部课程,仅售799元(原价5273元),还送漫威授权机械键盘+CSDN 20周年限量版T恤!rn rn rn 点此链接购买:rn rn rn rn rn rn https://edu.csdn.net/topic/teachercard?utm_source=jsk20xqyrnrnrn rn rn rn rnrn购买课程后,可扫码进入学习群,获取赵强老师答疑 rnrn rnrnrn rnrnrn 掌握MongoDB的安装和配置,以及如何<em>使用</em>Mongo Shell执行数据的CRUD操作。包含:基本操作、聚合操作,全文搜索,数据建模等等。rn
游标使用
怎么用<em>游标</em>方法更新表t_number的所有行,set fnote='1'rn请帮写条用<em>游标</em>更新的语句
游标使用嵌套查询的问题
我改写一个动态sql转为函数,但是我需要分解一个以逗号分隔的字符串的传入参数,然后在函数内当做<em>游标</em>查询的条件,我想弄成例如string in (select * from string)的形式,然后我在网上找了个函数分隔这个传入的字符串,但是我需要把这个分隔字符串函数放入我自己的pck中,<em>问题</em>就是<em>游标</em>不能<em>使用</em>嵌套查询。我又不想写成动态sql,有解决方案么?
列表框与游标使用的一个问题
我要做一个用户登陆框,我<em>使用</em><em>游标</em>把库中的一个字段的值(用户名)添加到列表框中。之后,我想在BUTTON控件得到该列表框选中的字段值,但是我用Selectedtext却不能取出当前列表框选中的内容。请问有什么方法可以取出来。rnrn
游标使用select 的参数问题
CREATE OR REPLACErnprocedure UpdateSHGL_CJForDate(rn i_cjrq in datern)rnas rn-------------------------rncursor dataForDate isselect HM,HMLB,BDHF,BDCT,BDGJ,YHL from SHGL_CJQD rnwhere CJRQ=changedDate;rn这个changedDate是i_cjrq的处理,可是是我现在想在定义<em>游标</em>之前用rn---------------------------rnrnselect to_char(i_cjrq,'YYYY-MM') into changeStrDate from dual;rn select to_date(changeStrDate,'YYYY-MM') into changedDate from dual;rn-------------------------------rn对i_cjrq进行处理怎么办一得到changedDate??怎么办谢谢!!!!
请教一个游标使用问题
<em>游标</em><em>使用</em>中rndeclare cursorrnfor rnrnrn在我的实际应用中,有一个输入参数是这个sql语句的一部分,只能是定义了一个变量来生成sql语句,但是这个变量怎么用在for里面哪rnrn具体代码如下rnrndelare @sql varchar(6000)rnselect @sql='select * from tablename where '+@wStr+' order by num' --@wStr就是输入参数,是一部分查询条件rnrn我直接把@sql放在for后面,结果抱错rnrndeclare cro_fastread cursor scrollrnfor @sqlrnrnrn请教正确的格式应该怎么写呢
游标使用变量的问题
大家好,很高兴大家能够关系我的帖子。rn<em>问题</em>:有两个嵌套的<em>游标</em>(如:cursor1和cursor2)cursor2在cursor1内部,外层<em>游标</em>从字典表中取表名,作为内层<em>游标</em>的变量。rn 这就涉及到<em>游标</em>中变量的<em>使用</em>,(我知道我描述的很不明确)所以下面我把代码贴出来,请大家指教。rnrn 描述的很不清楚,请多看下面的代码。rn[code=C#]rn create or replace procedure com_check_citynull isrnbeginrn ---<em>游标</em>,循环mdl_class_js(字典表)rn declare cursor fetch_mdl_class isrn select distinct table_name,name from mdl_class_js; --table_name 为字典表中存储其他表表名的字段rn tbname fetch_mdl_class%rowtype;rn table_name varchar2(100);rn beginrn open fetch_mdl_class;rn looprn fetch fetch_mdl_class into tbname;rn exit when fetch_mdl_class%notfound;rn rn strSql := 'select city from ' || tbname.table_name; --内层<em>游标</em>要从那张表中查找,并不确定,所以用变量代替。rn --tbname.table_name是外层<em>游标</em>中找出的表rnrn --内层<em>游标</em>,从外层<em>游标</em>中获取的表中查找。rn declare cursor fetch_tbname is rn execute immediate strSql; --注意,此处是<em>问题</em>的关键,因为在这条sql语句中表名是用变量来表示的,总是出错rn city_value fetch_tbname%rowtype;rn beginrn open fetch_tbname;rn looprn fetch fetch_tbname into city_value;rn exit when fetch_tbname%notfound;rn rn if city_value is null thenrn --其他操作...rn end if;rn end loop;rn end;rn end loop;rn end;rnend com_check_citynull;rn[/code]rnrn谢谢。
游标嵌套使用问题(在线)
在SQL中首先<em>使用</em>一个<em>游标</em>:作用是查询出一些数据,这些数据留待下面<em>游标</em>中的查询语句中作为条件<em>使用</em>。假如用变量@id表示查询到的所有id数据集,rn下面我在上面的的<em>游标</em>中rnwhile (@@fetch_status=0)rnbeginrn在这我又创建一个<em>游标</em>,它是用先前的@id作为条件来查询只有一条记录的数据rn然后入库rnendrn本来@id它有好多数据集,这样入库的数据也好多,但现在没有一条数据入库,rnrnrn
嵌入式Sql游标使用问题
我在<em>使用</em><em>游标</em>时,想在每次Fetch一条数据之后,处理这一条数据并将其插入到数据库中另一张表中去;rn可是在每次Fetch之后,执行insert时,该<em>游标</em>会自动关闭,fetch下一条就会报错-2114。rn请问,该如何保持<em>游标</em>在fetch之后再做其他Sql操作时,该<em>游标</em>不会自动关闭,而且能够正确fetch下一条数据?rnrn例:rnEXEC SQL DECLARE cur CURSOR forrn SELECT * FROM T_tablernrnEXEC SQL OPEN curRectraceMonthFee;rnrnwhile(1)rnrn EXEC SQL FETCH cur into :a, :b; [color=#FF0000]当做完insert操作,fetch将出错[/color]rn if(sqlcode == 100 || sqlcode == 1043)rn break;rn ....rn /* do insert */ ???[color=#FF0000]如何实现做才能使<em>游标</em>不关闭呢?[/color]rnrnexec sql close cur;rnrn急求!!!谢谢!
游标使用临时表的问题
不管##TempTable 怎么样命名,都会出现这样的错误:数据库中已存在名为 '##TempTable' 的对象。rn应该如何处理??谢谢大家!!rnrnrnCREATE PROCEDURE USP_Se_GetUptownGatherrn(rn @UptownID int,rn @FloorID int,rn @StartDate datetime,rn @EndDate datetimern)rnrnASrnBEGIN TRANSACTIONrnDECLARE @ERROR INTrnSET @ERROR = 0rn rn DECLARE @StartValue numericrn DECLARE @EndValue numeric rn DECLARE @Dosage numeric rn DECLARE @NetNo varchar(20) rn DECLARE @MinDate datetimern DECLARE @MaxDate datetimern rn DECLARE cur CURSOR FOR rn SELECT DISTINCT (a.S_NetNo) FROM F_EnergyDay a,E_MeterReg brn WHERE a.S_NetNo = b.S_NetNo and b.Uptown_ID = @UptownIDrn OPEN currn rn FETCH NEXT FROM cur INTO @NetNorn WHILE @@FETCH_STATUS = 0rn BEGIN rn SELECT @MinDate = min(a.D_Date) FROM F_EnergyDay a rn WHERE a.S_NetNo = @NetNo and Convert(varchar(10),a.D_Date,21) between @StartDate and @EndDatern SET @ERROR = @ERROR + ABS(@@ERROR)rn IF @MinDate is nullrn FETCH NEXT FROM cur INTO @NetNorn ELSErn BEGINrn SELECT @MaxDate = max(a.D_Date) FROM F_EnergyDay a rn WHERE a.S_NetNo = @NetNo and Convert(varchar(10),a.D_Date,21) between @StartDate and @EndDatern SET @ERROR = @ERROR + ABS(@@ERROR) rn SELECT @StartValue = a.N_Value FROM F_EnergyDay a rn WHERE a.S_NetNo = @NetNo and a.D_Date = @MinDatern SET @ERROR = @ERROR + ABS(@@ERROR)rn rn SELECT @EndValue = min(a.N_Value) FROM F_EnergyDay arn WHERE a.S_NetNo = @NetNo and a.D_Date = @MaxDatern SET @ERROR = @ERROR + ABS(@@ERROR)rn rn SELECT @Dosage = @EndValue - @StartValuern SET @ERROR = @ERROR + ABS(@@ERROR)rn --SELECT @MinDatern --select @NetNorn --a.S_MeterName,a.S_UptownName+a.S_FloorName+a.S_CellName+a.S_DoorName AS MeterAddr,c.S_CustName,c.S_Addr,rn rn SELECTrn @NetNo AS EquID,rn a.S_MeterName,a.S_UptownName+a.S_FloorName+a.S_CellName+a.S_DoorName AS MeterAddr,c.S_CustName,c.S_Addr,rn @StartValue AS StartValue,@EndValue AS EndValue,rn @MinDate AS StartDate,@MaxDate AS EndDate,@Dosage AS Dosagern INTO ##TempTable rn FROM MeterRegView a, C_Client_Detail b,C_Client_Master crn WHERE a.MeterReg_ID = b.MeterReg_ID and b.Clientmaster_ID = c.Clientmaster_ID and a.S_NetNo = @NetNorn ENDrn FETCH NEXT FROM cur INTO @NetNorn ENDrn CLOSE CURrn DEALLOCATE CURrn SELECT * FROM ##TempTablern DROP TABLE ##Tempablern SET @ERROR = @ERROR + ABS(@@ERROR) rn rnIF @ERROR = 0rn COMMIT TRANSACTIONrnELSErn ROLLBACK TRANSACTIONrnGOrn
ResultSet中游标使用问题
在ResultSet类中,判断是否找到结果的函数是什么
ORACLE存储过程中的游标使用问题
在存储过程中经常要<em>使用</em><em>游标</em>。rn下面代码是常用使法:rnrnCURSOR AlarmRecoveryRecordCursor IS SELECT var1 var2 FROM table where var1>1; rn....rnrnOpen AlarmRecoveryRecordCursor;rn....rnrn以上都是对的。现在由于Select条件需要根据传入参数进行组合,所以我需要用一个字符串变量来组合这个Select语句。rnrn改为以下。rnrn.... //组合字符串sqls是对的 sqls:='SELECT var1 var2 FROM table where var1>1';rnrnTYPE AlarmRecoveryRecordCursorType IS REF CURSOR;rnAlarmRecoveryRecordCursor AlarmRecoveryRecordCursorType;rn...rn...rnOpen AlarmRecoveryRecordCursor for sqls;rn...rn rn此时编译是没有<em>问题</em>,但在SQLPlus WorkSheet中调用这个存储过程时,提示上面“Open AlarmRecoveryRecordCursor for sqls”错误。组合的sqls是完全对的。不知道是不是<em>游标</em>不能这样<em>使用</em>,谁能解答这个<em>问题</em>呢?
使用游标,产生重复记录问题
在一个存储过程中<em>使用</em><em>游标</em>,把一个表的记录取出,逐个做处理后,插入到另一个表里。rn可是偶尔会有那么一天,记录会重复。例如,取出共5条记录,其中第三条记录会插入两次,共插入记录6条,而且重复插入的时间会在所有记录的中间。rn 定义<em>游标</em>rn Open <em>游标</em>rn Fetch...rn WHILE @@FETCH_STATUS = 0rn  操作 (处理后,把记录插入表里)rn Fetch..rn Close <em>游标</em>rn 释放<em>游标</em>rnrn请问,有人知道这是什么原因引起的吗?rnrn
delphi使用游标问题请教?
Delphi如何<em>使用</em><em>游标</em>呀?rn打开<em>游标</em>后怎么执行fetch提取数据呢?rn我的代码如下:rnq_month.SQL.Clear;rnq_month.SQLConnection:=conary[0];rnq_month.SQL.Add('declare ct cursor for'+rn ' select * from c_station_payment_history '+rn 'where logic_code="32010278"');rnq_month.SQL.Add('open ct');rnq_month.ExecSQL;rnfor i:=1 to...rn beginrn q_month.SQL.Add('fetch ct');rn s:=q_month.FieldByName('sell_amount').AsString;rnrn运行出错,以前又没用过<em>游标</em>,请各位帮忙,谢谢啦!
update语句使用游标问题
现有计划表A,计划汇总表Brnrn将A表数据按条件汇总后得到B表汇总数据,在对B表进行审批后,将B表的审批数回写到A表中,原update写法:rn //循环B表数据rn ArrayList ar_update = new ArrayList();rn for(int i = 0, len = bvos.length(); i < len ; i ++ )rn String sql = "update A set A.a1="+bvos[i].b1+",a2="+bvos[i].b2+",a3="+bvos[i].b3+...rn +" where A.pk_A='"+bvos[i].pk_A+"'";rn ar_update.add(sql);rn rn //批处理rn PubBO bo = new PubBO();rn bo.updataBatchBySQL(ar_update);rnrn但在update时,如果数据超过300条就报"超过<em>游标</em>最大数"错误rnrn我知道可以修改Oracle参数,把<em>游标</em>最大数改大些,但不这样做,是不是可以修改一下update,让它执行时更有效率一些呢?rn例如我现在的改法:rn StringBuffer sb = new StringBuffer();rn sb.append("update A set A.a1=(select b1 from B where B.pk_A=A.pk_A),")rn .append("A.a2=(select b2 from B where B.pk_A=A.pk_A),")rn .append("A.a3=(select b3 from B where B.pk_A=A.pk_A),")rn .append("A.a4=(select b4 from B where B.pk_A=A.pk_A),")rn .append("A.a5=(select b5 from B where B.pk_A=A.pk_A),")rn .......(总共有十个数要回写)rn .append("where pk_A in (");rn for(int i = 0, len = bvos.length(); i < len ; i ++ )rn if( i != 0 )rn sb.append( "," );rn sb.append("'").append(bvos[i].getPk_A()).append("'");rn rn sb.append(")");rn dmo.executeUpdateSQL(sb.toString());rnrn现在我的<em>问题</em>是:rn1.有没有更高效的写法?本来在SQL SERVER中,可以用 update .... set ..... from ...... where ....但这种写法Oracle不支持,所以现在只能用子查询,但是如果需要更新的字段很多的话,那一个字段就是一个子查询,这样应该会很影响执行效率吧?rn2.原来的写法中,最大的<em>问题</em>就是<em>使用</em>了若干个update语句,这样会对应<em>使用</em>若干个<em>游标</em>,所以会出现<em>游标</em>最大数的<em>问题</em>,如果按我现在的写法,究竟在执行的时候用了多少个<em>游标</em>? 按我的理解,应该是这一个语句整体<em>使用</em>一个<em>游标</em>,但在更新每行时,会用到子查询的十个<em>游标</em>,但这样每行执行完后,这十个<em>游标</em>释放了吗?到最后,总共有多少个<em>游标</em>呢?rnrn
在触发器中使用游标问题
看SQL2000帮助说,不推荐在触发器中<em>使用</em><em>游标</em>,那还有那种方法可以替代<em>游标</em>实现,每条记录逐一读取。。。
JSP 中游标使用问题
我在程序中想实现两个<em>游标</em>的嵌套可是总是有<em>问题</em>请高手解释一下!rn代码如下:rnwhile(i for details.rn
Oracle中的游标使用问题
[code=SQL]rnDECLARErn var_cursor SYS_REFCURSOR;rnBEGINrn procedure_name(p_1 => NULL,rn p_2 => NULL,rn p_3 => NULL,rn p_cursor => var_cursor);rn FOR i IN var_cursor LOOPrn dbms_output.put_line(i.col_name);rn END LOOP;rnEND;rn[/code]rn我的意图是:rn首先定义一个<em>游标</em>var_cursor。rn然后执行一个存储过程procedure_name,它有四个参数,前三个都给他NULL,第四个是一个out<em>游标</em>,我将它赋给了上面定义的var_cursor。rn然后遍历<em>游标</em>,把值输出。rn报错在FOR i IN var_cursor LOOP这里,错误是PLS-00221: 'var_cursor' is not a procedure or is undefined。rnrn为啥会报错,帮忙看一下。谢谢大家。
Pb使用中的问题
本来只显示一条记录,其中颜色码是4位的,如0001,0002,....,正确的是每条记录其颜色码都要正确显示出来.我从后台数据库查了,根据DATAWINDOW中的语法在SQL查询分析器中显示的是正常的.在PB的开发环境中运行也能显示正确的颜色码(4位).但编译后,却存在一些记录,一条拆分成2条,不同点就是多出一条的记录的颜色码为000,我就不知道这个000是怎么出来的,难道是显示器不正常吗?编译后的程序在某几台电脑上能正常显示,没有出现拆分的现象.
pb 使用SHaredata的问题
DW_1.DATAObject = "D_GRDA_BD"rnDW_2.DATAObject = "D_GRDA_FWQ"rnDW_2.SETTRANSObject(SQWS_FWQ)rnDW_2.RESet( )rnDW_1.SETTRANSObject(SQLCA)rnDW_1.RETrieve( )rnDW_1.SHaredata(DW_2)rnIF DW_2.UPDATE() = 1 THENrn COMMIT USING SQWS_FWQ;rnEND IFrn怎么dw_2共享的数据保存到数据库里去,高手帮忙看看
pb的全局变量使用问题?
<em>pb</em>的全局变量在共享对象中用不了,只有在共享对象中重新初始化全局变量才能<em>使用</em>.rn这是PB的设计原则吗?
pb使用问题
记得整机之前,<em>pb</em>8中,system tree具有4个tab页rn整机后 重装,system tree只剩下1个workspace页
PB的使用问题
各位高手好:rnrn 小女子实在是PB的新手,处在自学的阶段,好不容易用了几天的时间把PB装成功了(因为它频繁出错),现在想用PB11.5打开PB6的一个源程序,请高手赐教一个详细的过程。。。rnrn网上查到的方法是这样的:[color=#FF0000]创建一个工作区,右键该工作区--"New"--"Existing Application"--选择以前的应用--"Next"--指定".<em>pb</em>t"文件--"Finish"--开始升级,点“Browse”将其他的<em>pb</em>l加入--"ok"--自动升级,提示指定数据库时,随便指定一个。[/color]rnrnrn我把原来的PBW删除了,用这种方法添加了PBL,可以看到其中的表,但是不能运行!一运行就弹出错误,意思好像是6.0的不能在这个版本中运行!!高手赐教。。。
游标问题游标 游标 咋写啊
有两个表,A表和B表(B表存的是上次操作A表后的数据),当我登录之后,我可以对A表进行添加删除修改,当我修改完后。要将修改完后的A表每一条记录与B表每一条记录比较,如果比较后取得了返回值,则将修改完后的A表cpoy到B表中。rn表中的字段有rnUSER_ID charrnPASSWORD varcharrnS_COD charrnS_NAM varcharrn.rn.rn.rnTIME_STAMP_DT datetimern请各位大虾帮下忙,小弟刚学<em>游标</em>这个地方,谢谢!!!
PB使用PBDOM 的问题
PBDOM_ELEMENT <em>pb</em>dom_elem ,<em>pb</em>dom_elem1,<em>pb</em>dom_retCode,<em>pb</em>dom_retMsgrn<em>pb</em>dom_elem =Create PBDOM_ELEMENTrn<em>pb</em>dom_elem1=Create PBDOM_ELEMENTrn<em>pb</em>dom_retCode=Create PBDOM_ELEMENTrn<em>pb</em>dom_retMsg=Create PBDOM_ELEMENTrnrn<em>pb</em>dom_builder dom_buildrnPBDOM_DOCUMENT dom_docrndom_build=create <em>pb</em>dom_builderrndom_doc=dom_build.buildfromstring(ls_xml) ////解析xml,生成Documentrnrn<em>pb</em>dom_elem=dom_doc.GetRootElement()rnrn<em>pb</em>dom_elem1=<em>pb</em>dom_elem.getChildElement("response")rn<em>pb</em>dom_retCode=<em>pb</em>dom_elem1.getChildElement("retCode")///////////为什么有时候会在词句报错呢???rn<em>pb</em>dom_retMsg=<em>pb</em>dom_elem1.getChildElement("retMsg")rnls_retCode=<em>pb</em>dom_retCode.gettexttrim()rnls_retMsg=<em>pb</em>dom_retMsg.gettexttrim()rnrnrn为什么会报 null object reference 错误呢?rn是找不到节点随便写吗?rn如何屏蔽报错呢??
pb中不使用游标读取结果集中的数据
如题,现在客户用sql server 2000检测工具进行监控发现,我写的PB程序一用select查询了结果集,用<em>游标</em>将结果集中的数据一行一行读入datawindow后,客户数据库服务器的CPU占用率非常高(我的<em>游标</em>有时只在结果集中读20来条记录,而客户数据库服务器的CPU往往占16%以上的资源),请高手指点一下,我现在不想用<em>游标</em>进行结果集进行查询,还有一个<em>问题</em>,按PB书上说,<em>游标</em>读取的结果集不是保存在本机上的吗,也就是说,我用SELECT查询客户数据库服务器,当我SELECT查询完后,结果集应该就存在我本机上,我再用<em>游标</em>去进行查询只不过是对我数据缓冲区中结果集进行查询,怎么现在看起来不是这样的,怎么还在客户数据库中去读呢?
pb中的游标是在任何数据库下都可一使用吗?
1.<em>pb</em>中的<em>游标</em>是在任何数据库下都可一<em>使用</em>吗?rn ms sql server的<em>游标</em>,有向前移动吗?能直接移动到指定的记录吗?rnrn2.假如我要从第a个数据开始,读b行数据,用SQL语句怎么表示?(MSSQL SERVER)rn 我只知道 TOP N 从第一个数据开始,读N行数据!rnrn3.还是上面的第而个问提,我把满足条件的记录读出来,可否用<em>游标</em>来定位!
使用游标出错,请PB达人指点指点
源程序如下:rndeclare c1 cursor for select acct_id,serv_id,bill_item_type_id,charge from tmp_gcust_charge;rnopen c1;rnif sqlca.sqlcode<>0 thenrn printmsg("打开取临时表中费用<em>游标</em>出错!错误原因:"+sqlca.sqlerrtext)rn returnrnend ifrnrnFETCH c1 INTO :ls_acct_id,:ls_serv_id,:ls_item_type_id,:ls_charge;rnrndo while sqlca.sqlcode = 0 rn CHOOSE CASE ls_item_type_id rn CASE 1001 rn ls_sql="update "+ls_tab+" set basic_charge="+string(ls_charge)+" where acct_id="+string(ls_acct_id)+" AND SERV_ID="+string(ls_serv_id) rn EXECUTE IMMEDIATE :ls_sql;rn if sqlca.sqlcode<>0 thenrn messagebox("错误!","更新商务客户帐单失败!原因:"+sqlca.sqlerrtext)rn rollback;rn returnrn end ifrn commit;rn CASE 1002 rn ls_sql="update "+ls_tab+" set sh_charge="+string(ls_charge)+" where acct_id="+string(ls_acct_id)+" AND SERV_ID="+string(ls_serv_id) rn EXECUTE IMMEDIATE :ls_sql;rn if sqlca.sqlcode<>0 thenrn messagebox("错误!","更新商务客户帐单失败!原因:"+sqlca.sqlerrtext)rn rollback;rn returnrn end ifrn commit;rn CASE 1003rn ls_sql="update "+ls_tab+" set wh_charge="+string(ls_charge)+" where acct_id="+string(ls_acct_id)+" AND SERV_ID="+string(ls_serv_id) rn EXECUTE IMMEDIATE :ls_sql;rn if sqlca.sqlcode<>0 thenrn messagebox("错误!","更新商务客户帐单失败!原因:"+sqlca.sqlerrtext)rn rollback;rn returnrn end ifrn commit;rn CASE 1006 rn ls_sql="update "+ls_tab+" set gnct_charge="+string(ls_charge)+" where acct_id="+string(ls_acct_id)+" AND SERV_ID="+string(ls_serv_id) rn EXECUTE IMMEDIATE :ls_sql;rn if sqlca.sqlcode<>0 thenrn messagebox("错误!","更新商务客户帐单失败!原因:"+sqlca.sqlerrtext)rn rollback;rn returnrn end ifrn commit;rn CASE 1029 rn ls_sql="update "+ls_tab+" set gjct_charge="+string(ls_charge)+" where acct_id="+string(ls_acct_id)+" AND SERV_ID="+string(ls_serv_id) rn EXECUTE IMMEDIATE :ls_sql;rn if sqlca.sqlcode<>0 thenrn messagebox("错误!","更新商务客户帐单失败!原因:"+sqlca.sqlerrtext)rn rollback;rn returnrn end ifrn commit;rn CASE 1061 rn ls_sql="update "+ls_tab+" set xyw_charge="+string(ls_charge)+" where acct_id="+string(ls_acct_id)+" AND SERV_ID="+string(ls_serv_id) rn EXECUTE IMMEDIATE :ls_sql;rn if sqlca.sqlcode<>0 thenrn messagebox("错误!","更新商务客户帐单失败!原因:"+sqlca.sqlerrtext)rn rollback;rn returnrn end ifrn commit;rn END CHOOSErn FETCH c1 INTO :ls_acct_id,:ls_serv_id,:ls_item_type_id,:ls_charge;rnloop rnclose c1;rnif sqlca.sqlcode <> 0 thenrn printmsg("关闭取<em>游标</em>错!错误原因:"+sqlca.sqlerrtext)rn returnrnend ifrnrnrn结果中只更改了一条记录,提示关闭<em>游标</em>出错,错误原因是procedure has not been excuted or has no results.请达人指点
SQLSERVER游标嵌套游标问题
[img=https://img-bbs.csdn.net/upload/201307/29/1375108145_139563.jpg][/img]rnrnrn上面这个语句段没什么<em>问题</em>吧,咋就两<em>游标</em>有影响了呢,请指教!!
游标问题,提示游标不存在
提示:名为 'my_cursor' 的<em>游标</em>不存在。警告: 聚合或其它 SET 操作消除了空值,是为什么,如何解决?rnif exists(select 1 from BM_FSplitTbl where JCode=@JCode and SpliteDate>@effDate)rn beginrn --通过<em>游标</em>循环执行存储过程 AA_sp_FundJudSplit 添加基金拆分数据rn deallocate my_cursorrn declare my_cursor cursor rn --scroll表示可随意移动<em>游标</em>指针(否则只能向前),dynamic表示可以读写<em>游标</em>(否则<em>游标</em>只读)rn forrn select SpliteDate from BM_FSplitTbl where JCode=@JCode and SpliteDate>@effDate order by SpliteDate ascrn open my_cursorrn declare @SpliteDate sysnamern fetch next from my_cursor into @SpliteDatern while(@@fetch_status=0)rn beginrn exec AA_sp_FundJudSplit @CombId,@JCode,@SpliteDate,1rn fetch next from my_cursor into @SpliteDatern endrn close my_cursorrn DEALLOCATE my_cursor
Oracle存储过程使用游标,循环游标取数据
1.在存储过程中 定义<em>游标</em>;   以“cur_yjdl ”为例 create or replace procedure fnStat1399(p_params varchar2,   p_cursor1401 out sys_refcursor,   p_partId Integer ) is   NYDMJ varchar2(100);   JSYDMJ varchar2(100);   W...
请问db2存储过程中游标嵌套游标使用问题
rn P1: BEGINrn --声明变量rn DECLARE ENDTABLE INT DEFAULT 0;rn DECLARE vCORPNO varchar(20); --单位编号rn DECLARE vCORPNAME varchar(50); --单位名称rn DECLARE vBIZNO varchar(15); --业务编号rn DECLARE vDATE varchar(10); --日期rn DECLARE vAMT DECIMAL(18,2); --金额rnrn --查询所有公司信息rn DECLARE CORPSTAT CURSOR FORrn select corpno,corpname from corpInfo;rn --根据公司编号获取汇入汇款信息rn DECLARE INWARDSTAT CURSOR FORrn select bizNo,date,amtrn from inword where corpno = vCORPNO;rnrn OPEN CORPSTAT;rn SET ENDTABLE = 0;rn FETCH CORPSTAT INTO vCORPNO,vCORPNAME;rn WHILE ENDTABLE = 0 DO rn OPEN INWARDSTAT;rn FETCH INWARDSTAT INTO vBIZNO,vDATE,vAMT;rn insert into QRY_corpBalance(bizNo,date,amt) values(vBIZNO,vDATE,vAMT);rn FETCH INWARDSTAT INTO vBIZNO,vDATE,vAMT;rn CLOSE INWARDSTAT;rn FETCH CORPSTAT INTO vBIZNO,vDATE,vAMT;rn END WHILE;rn CLOSE CORPSTAT;rnEND P1;rnrnrn我想在<em>游标</em>中嵌套<em>游标</em>,根据第一个<em>游标</em>循环得出的一个公司编号,根据公司编号到另外一个表进行查询(就是执行第二个<em>游标</em>),但是老是进入到死循环中。为什么?这样写不行吗?在我定义的第二个INWARDSTAT 中vCORPNO条件会随着第一条<em>游标</em>的结果集自动更新查询条件吗? 谢谢。。。如果有<em>游标</em>中嵌套<em>游标</em>的例子就更好了。rn
游标_使用WHILE循环检索游标中的结果集
本课程基于微软新的SQL Server 2016,讲解了数据完整性、视图、索引、存储过程、流程控制、<em>游标</em>、事务、函数、触发器等技术;n本课程将分为四个部分:基本操作与查询、查询、数据库编程、数据库管理,由浅入深的讲解SQL Server 2016技术体系,本课程是数据库编程。n欢迎各位学员加群431277381,一起交流学习。
游标使用2-常用属性及引用游标
隐式<em>游标</em> 四个常用的属性 Sql%FOUND SQL%NOTFOUND SQL%ISOPEN SQL%ROWCOUNTDeclare Dept_no_number(4) :=50; Begin Delete from dept_temp where deptno=dept_no; If sql%found then Insert into dept_temp values(50
在PB中如此定义游标是否正确?
string s_field_id , s_field_name ,s_table rnrnstr_select = "select " + s_field_id + " , "+ s_field_name + " from " + s_table rndeclare c_cursor cursor for str_select;rnrn我设想定义一个动态<em>游标</em>,上面的例子正确吗?rn不正确该如何实现呢?rn rn
游标问题
用<em>游标</em>实现在命令行窗口显示出部门号以及对应的部门名称。 rnrndeclarerncursor a_dept is select deptno,dname from dept;rndeptno1 dept.deptno%type;rndname1 dept.dname%type;rnbeginrnopen a_dept;rnlooprnfetch a_dept into deptno1,dname1;rndbms_output.put_line(deptno1||' 'dname1);rnexit when a_dept%notfound;rnEND loop;rnclose a_dept;rnEND;rnrn这是我写的,有<em>问题</em>。。。刚学,求指导,求教育!rnrnrn
游标问题??
我用循环遍历了一个结果集,如果再第二次遍历的话,rn会出现”[Microsoft][ODBC 驱动程序管理器] 无效的<em>游标</em>状态“ 的错误,rn应该用什么样的<em>游标</em>??请指教。。rn我的代码如下:rn while(rstype.next())rn System.out.println(rstype.getInt(1));rn System.out.println(rstype.getString(2));rn rn System.out.println("AAAAAAAAAAAA");rn while(rstype.next())rn System.out.println(rstype.getInt(1));rn System.out.println(rstype.getString(2));rn rnrn第一个循环能正常打印,到第二个循环就提示上面的<em>游标</em>错误了,请指教。。先谢谢了
游标问题????
string ls_1rndeclare get_fd cursor forrn select usernamern from usergo;rnopen get_gxanyi;rnfetch get_gxanyi into :ls_1;rndo while ???.eofrntext=rnlooprn close get_fd;rnASP里的表达方式,想要这种,???为数据集合rn我想一个PB文本框读完表里的内容,怎么实现?? <em>游标</em>有没有总集合呢
游标问题
有没有多个表的<em>游标</em>?rn怎么定义?
MatToQImage下载
将OpenCV中的Mat结构转换为Qt中的QImage结构的函数 相关下载链接:[url=//download.csdn.net/download/masikkk/5284161?utm_source=bbsseo]//download.csdn.net/download/masikkk/5284161?utm_source=bbsseo[/url]
Router OS 5.0RC11下载
5.0版本的最后一个RC版,从官方下载,因为ISO超过20M,所以压缩了下,已经过虚拟机安装测试成功。 相关下载链接:[url=//download.csdn.net/download/ldk5415/3176958?utm_source=bbsseo]//download.csdn.net/download/ldk5415/3176958?utm_source=bbsseo[/url]
S5670-2.3.6-amss下载
mogu]S5670-2.3.6-amss 相关下载链接:[url=//download.csdn.net/download/u010208801/5233069?utm_source=bbsseo]//download.csdn.net/download/u010208801/5233069?utm_source=bbsseo[/url]
相关热词 c# 去空格去转义符 c#用户登录窗体代码 c# 流 c# linux 可视化 c# mvc 返回图片 c# 像素空间 c# 日期 最后一天 c#字典序排序 c# 截屏取色 c#中的哪些属于托管机制
我们是很有底线的