sql 两个表的游标查询

创建一个存储过程用来生成商品的细目,(必须用游标功能),有两个参数

1个回答

你的问题说的不够详细,下面给一些指导希望对你有用;
首先声明个游标

TYPE L_cursor IS REF CURSOR;
建存储过程 把查询的机构放到游标上的值 out出来即可
CREATE OR REPLACE PROCEDURE p_produce( 参数1 类型 in或者out,...,L_cursor out)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
sqlserver 存储过程,游标嵌套死循环,求指导。

[code="sql"]if(OBJECT_ID('pro_fristCount','P') is not null) drop procedure pro_fristCount; go create procedure pro_fristCount as create table #depe_records( -- 创建临时表 deptId nvarchar(100), deptName nvarchar(100), itemId nvarchar(100), itemName nvarchar(100), ticketNum int, voteId nvarchar(100) ); declare @temp_deptId nvarchar(100),@temp_deptName nvarchar(100),@temp_itemId nvarchar(100),@temp_itemName nvarchar(100),@temp_ticketNum int,@temp_voteId nvarchar(100);--临时表数据 declare @deptId nvarchar(100); declare cur_group cursor for select deptId from sp_vote_dept_records ;--按照部门分组 open cur_group fetch next from cur_group into @deptId; while(@@FETCH_STATUS=0) begin print @deptId; declare cur_votedept cursor for select top 10 * from sp_vote_dept_records where deptId=@deptId order by deptId desc ;--每个部门的十件大事 open cur_votedept fetch next from cur_votedept into @temp_deptId,@temp_deptName,@temp_itemId,@temp_itemName,@temp_ticketNum,@temp_voteId; while(@@FETCH_STATUS=0) begin print @temp_deptId+@temp_deptName+@temp_itemId; insert into #depe_records values(@temp_deptId,@temp_deptName,@temp_itemId,@temp_itemName,@temp_ticketNum,@temp_voteId); end fetch next from c_showuser into @temp_deptId,@temp_deptName,@temp_itemId,@temp_ticketNum,@temp_voteId; close c_showuser; deallocate cur_votedept fetch next from cur_group into @deptId; end close cur_group deallocate cur_group return select * from #depe_records; [/code] 第二个游标只会遍历不大于十条是数据,但是却总是死循环。

sql使用游标插入数据 为什么出现死循环?

create table stu ( id int, names varchar(120) ) insert into stu(id,names) values (1,'wdl') insert into stu(id,names) values (2,'cyc') insert into stu(id,names) values (3,'zyz') declare @id int declare @names nvarchar(200) declare myCursor cursor for select id,names from stu open myCursor fetch next from myCursor into @id,@names while @@FETCH_STATUS=0 begin insert into dbo.stu values(@id+3,@names) fetch next from myCursor into @id,@names end close myCursor deallocate myCursor select * from stu ``` ```

存储过程,插入表时是否可以同时从游标和另一张表取数据? 已添加自己写的在下面。

W表为基础表 M表为报表层表,两张表字段几乎一样,只有两列代理键,TIME_WID 和COMPANY_WID 要关联另外两张表,日期维表和 公司维表,可根据W表的机构和时间检索出日期和公司的代码, 现在存储过程要实现的功能就是W层的表到M层表的同步,再转下代理键 就Ok 起初我想把机构和公司设为参数,写进游标,再从游标取值 人两个参数,再同W表的其他参数插入到M表 但不清楚如何 把游标的参数 和W表的字段同时插入进M表里? 由于之前没有写存储过程的经验,这次上面要求的又挺急,请各位帮忙解决这个问题, 多谢,多谢!! CREATE OR REPLACE PROCEDURE TP_EXAM IS I_SJ NUMBER; I_JG NUMBER; V_SDATE NUMBER; V_UPDA NUMBER; --DELETE FROM RPT_YW_YB10_INTER_INSUR_RANK_F WHERE COMPANY_WID = '111'; TYPE Cursors IS REF CURSOR; c_CUR Cursors; OPEN c_CUR FOR SELECT TIME_WID, COMPANY_WID FROM DW_YW_YB10_INTER_INSUR_RANK_F RF LEFT JOIN W_COMPANY_D COMY ON (RF.JG = COMY.COMPANY_CODE) LEFT JOIN W_TIME_D T ON (RF.SJ = T.DAY_DT); --取出时间和机构的代理键 LOOP FETCH c_CUR INTO I_SJ, I_JG, BEGIN INSERT INTO RPT_YW_YB10_INTER_INSUR_RANK_F VALUES (I_SJ,I_JG); SELECT (index_name, ditch_name, insurance_name, period, ytd_value, batch_id, created_by, updated_by, combination_record, src_sys, etld_at) INTO RPT_YW_YB10_INTER_INSUR_RANK_F FROM DW_YW_YB10_INTER_INSUR_RANK_F WHERE updated_at = V_UPDA -1; EXIT WHEN c_CUR%NOTFOUND; END LOOP; CLOSE c_CUR; SELECT SYSDATE INTO V_SDATE FROM DUAL; SELECT updated_at INTO V_UPDA; n:=1; WHILE INSERT INTO RPT_YW_YB10_INTER_INSUR_RANK_F SELECT * FROM RPT_YW_YB10_INTER_INSUR_RANK_F where rownum between n and n+1000; if Sql%Rowcount <1000 then commit; break; end if; n:=n+1000; COMMIT; END;

python cx_Oracle 将sql使用游标执行编码问题

### 将python爬取到的信息使用format填入设定的sql中,再使用游标执行这串sql。 ``` sql = "INSERT INTO SPIDER_BJ_ATTRIBUTE(jj, hxjg, jzmj, szlc, JZSJ, cx, zxqk, id, fbsj ,zj, dj, sf, fwhx) VALUES(。。。。) print(sql) cursorObj.execute(sql) connectObj.commit() ``` 最终打印的sql是 ``` INSERT INTO SPIDER_BJ_ATTRIBUTE(jj, hxjg, jzmj, szlc, JZSJ, cx, zxqk, id, fbsj ,zj, dj, sf, fwhx) VALUES('沿湖小区 精装南北通透 独立两室 客厅通阳台 无税', '2室2厅','90m²', '中层(共6层)','2000年建造', '南北','精装修', ' 1525906959', '2018年12月08日','190万', '21111 元/m²', '57.00万', '普通住宅') ``` 但是最终执行游标时出现了错误 UnicodeEncodeError: 'gbk' codec can't encode character '\xb2' in position 145: illegal multibyte sequence 刚开始学python,基础也不是很好的我。在网上看了一些帖子也没有把问题解决。 请各位大佬帮忙看一下。

[请教高手]sql游标问题

[size=large] (1) SQL的游标是不是将从数据库查到的数据放在内存中? (2) 通过游标进行增加、删除、修改等操作后,这些数据能不能真实影响到数据库?我的意思是,这些操作是否对数据库进行增、删、改? (3) 如果游标操作[b][i]不能[/i][/b]真实影响到数据库,那么在内存中进行这些操作又有什么意义呢? [/size] [b]问题补充:[/b] 补充: A) SQL的游标是不是对select操作得到的ResultSet进行操作? B) 得到的ResultSet是在数据库中(也就是在硬盘中)还是在内存中? [b]问题补充:[/b] 当然, 通过游标进行的增、删、改、查当然能够影响到真实的数据库。这一点你可以联系到视图,唯一的区别是, 视图是表级,而游标是行级 游标是个结果集,是从数据表中提取出来的数据,以临时表的形式存放在内存中 ===================================================================== 上面是从两位朋友的答复中抽取出来的部分文字。 我也认为通过游标进行的增删改查能真实的影响数据库,要不就这样的操作就真的没有什么意义了。上面的两个答复中提到“视图”、“临时表的形式存放”,我发这个帖发问的最大疑问就是:通过操作这些存放在内存中的临时表数据(“视图”我觉得本质上也是一张临时表),是如何真正去影响数据库(硬盘上的数据)的?如果我没有记错的话,对视图这样的临时表进行操作是不能影响到真实基表的。那么我们通过游标对临时表进行操作,是何时将这些增删改的数据操作同步到数据库的?也就是说是何时将[内存]中的临时表数据关联到[硬盘]上的数据库而实际影响数据库的?

使用游标查询部门为10的员工,并为其增加1000元,我这里测试反馈数据不正确,麻烦请教感谢

declare cursor c1(dno myemp.deptno%type) is select * from myemp t where t.deptno = dno; prec myemp%rowtype; begin open c1(10); loop fetch c1 into prec; update myemp t set t.sal=(t.sal+1000) where t.empno = prec.empno; exit when c1%notfound; end loop; close c1; commit; end; --通过oricle那个emp表返回的结果,一共有三个部门为10的员工,测试出来只有两个员工按正常1000元加上去了。但是另外一个却加了2000元,是代码哪里出问题了吗?求指点/

MSSQL如何将表A的列名循环赋值给@name

如题,本人刚学SQL的小白……想把截图的表从第二个列名,也就是截图中圈到的“重庆”两个字赋值给一个变量,然后进行一段查询语句,之后在讲第二个列名,也就是“成都”两个字赋值给一个变量。一直到把所有列名赋值完。因为后面要运行的查询语句是一大段用到这个列名的查询语句,一次次的打太麻烦,所以想用一个变量来代替。听说要用到游标,但不知道该怎么用。请各位大神指教!![图片说明](https://img-ask.csdn.net/upload/201602/25/1456385680_704160.jpg)

很简单SQL三个表做查询,送分题,太久没有接触SQL,基础的都忘了!

首先一个库中有3个表 A表 SAPN0# QTY A 2 B 4 C 8 D 12 B表 HUBN0# QTY Q 2 W 3 E 20 C表 SAPNO# HUBN0# A Q B W C E D E 其中A表是我们系统数量,B表是对方仓库数量,C表是A表与B表的NO#做关联。 我希望得到的表是, B表的 HUBNO# 对应A表的QTY B表的QTY 以及他们之间的差值 HUBN0# A.QTY B.QTY DIFF Q 2 2 0 W 4 3 1 E 20 20 0 额外有一点需要注意,就是A表可能有两个NO#对应B表一个NO# 最后详细一些,麻烦了,太久没接触SQL了 ,虽然逻辑知道,但是,具体执行有些生疏了。

sql如何将一次查询的结果与另一次查询的结果合并并排序

查询1: Select null as name,Checkinout.* from Checkinout where (Checkinout.userid=1000000000000 and (Checkinout.CheckTime >='2008-01-01 00:00:00') and (Checkinout.CheckTime <='2020-01-01 23:59:59')) Order By Checkinout.CheckTime DESC Limit '0','6' 查询2: Select UserInfo.name,Checkinout.* from UserInfo left join Checkinout on Checkinout.userid=UserInfo.userid where ((Checkinout.CheckTime >='2008-01-01 00:00:00') and (Checkinout.CheckTime <='2020-01-01 23:59:59')) Order By Checkinout.CheckTime DESC Limit '0','6' 将这两次查询的结果合并后按照Checkinout.CheckTime排序

SQL语句执行卡死,查询不出结果

SQL语句执行卡死,查询不出结果 ``` SELECT Q03.B0110 ,Q03.E0122, Q03.A0101 , Q03.E0127 , sum(Q03.Q0329) SUM_Q0329,sum(Q03.Q0331) SUM_Q0331, sum( Q03.Q0329 + Q03.Q0331 ) SUM_JIABAN,sum(Q03.Q0317) SUM_Q0317 , sum(isnull(Q03.Q0319,0)) SUM_Q0319,sum(Q03.Q0305) SUM_Q0305,sum(isnull(Q03.Q0301,0)) SUM_Q0301,sum(isnull(Q03.Q0303,0)) SUM_Q0303,sum(Q03.Q0307) SUM_Q0307,sum(Q03.Q0309) SUM_Q0309, sum(Q03.Q0311) SUM_Q0311,sum(Q03.Q03ZE) SUM_Q03ZE,sum( Q03.Q03Z8 ) SUM_Q03Z8,isnull(UsrA01.C0181,RetA01.C0181) renyuanleibie,isnull(UsrA01.H01SV , RetA01.H01SV) H01SV, (case when VO.CODEITEMDESC is null then organization.codeitemdesc ELSE VO.CODEITEMDESC END ) AS CODEITEMDESC , organization.codeitemdesc CENTERDESC,VO.DEPARTMENT , (case when VO.DEPARTMENTDESC is null AND VO.CODEITEMDESC IS NOT NULL then VO.CODEITEMDESC when VO.DEPARTMENTDESC is null AND VO.CODEITEMDESC IS NULL then organization.codeitemdesc ELSE VO.DEPARTMENTDESC END ) as DEPARTMENTDESC , VO.FULLNAME FROM dbo.Q03 Q03 LEFT JOIN dbo.UsrA01 UsrA01 ON Q03.E0127 = UsrA01.E0127 LEFT JOIN dbo.RetA01 RetA01 ON Q03.E0127 = RetA01.E0127 LEFT JOIN dbo.VIEW_ORGANIZATION_BELONG VO ON Q03.E0122= VO.CODEITEMID LEFT JOIN dbo.organization organization ON Q03.B0110 = organization.codeitemid WHERE Q03.Q03Z0 BETWEEN 开始日期 AND 结束日期 GROUP BY Q03.B0110 , Q03.E0122 , Q03.A0101 , Q03.E0127 ,isnull(UsrA01.C0181,RetA01.C0181) ,isnull(UsrA01.H01SV , RetA01.H01SV) , VO.CODEITEMDESC , organization.codeitemdesc ,VO.DEPARTMENT ,VO.DEPARTMENTDESC , VO.FULLNAME ```

mysql 存储过程中游标临时表问题

DELIMITER $$ USE `laolao`$$ DROP PROCEDURE IF EXISTS `parent_sport_sort1`$$ CREATE DEFINER=`root`@`%` PROCEDURE `parent_sport_sort1`(IN jidb VARCHAR(64),IN uname VARCHAR(64),IN starttime VARCHAR(64),IN endtime VARCHAR(64), IN startmonth VARCHAR(64),IN endmonth VARCHAR(64),IN startday VARCHAR(64), OUT totala INT,OUT ranking INT,OUT totalamonth INT,OUT rankmonth INT,OUT totaladay INT,OUT rankday INT) BEGIN DECLARE usname VARCHAR(64); DECLARE done INT DEFAULT FALSE; DECLARE cur_usname CURSOR FOR SELECT parentname FROM user_chilld WHERE childname=uname; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur_usname; read_loop: LOOP FETCH cur_usname INTO usname; IF done THEN LEAVE read_loop; END IF; SET @mytemp = 0; SELECT newid,stotal INTO ranking,totala FROM( SELECT (@mytemp:=@mytemp+1) AS newid,stotal,username FROM ( SELECT SUM(total) stotal, username FROM exercise WHERE ( username IN( SELECT username FROM ofRoster WHERE jid=CONCAT(usname,jidb) OR username =usname) AND createtime BETWEEN starttime AND endtime )GROUP BY username ORDER BY stotal DESC )a ) a1 WHERE username=usname; SET @mytemp = 0; SELECT newid,stotal INTO rankmonth,totalamonth FROM( SELECT (@mytemp:=@mytemp+1) AS newid,stotal,username FROM ( SELECT SUM(total) stotal, username FROM exercise WHERE ( username IN( SELECT username FROM ofRoster WHERE jid=CONCAT(usname,jidb) OR username =usname) AND createtime BETWEEN startmonth AND endmonth )GROUP BY username ORDER BY stotal DESC )a ) a1 WHERE username=usname; SET @mytemp = 0; SELECT newid,stotal INTO rankday,totaladay FROM( SELECT (@mytemp:=@mytemp+1) AS newid,stotal,username FROM ( SELECT SUM(total) stotal, username FROM exercise WHERE ( username IN( SELECT username FROM ofRoster WHERE jid=CONCAT(usname,jidb) OR username =usname) AND createtime BETWEEN startday AND startday )GROUP BY username ORDER BY stotal DESC )a ) a1 WHERE username=usname; END LOOP; CLOSE cur_usname; END$$ DELIMITER ; 现在的这个存储过程,只能根据游标最后一条数据,返回一行, 我现在需要的是DECLARE cur_usname CURSOR FOR SELECT parentname FROM user_chilld WHERE childname=uname; 这个游标返回的是多个,根据返回的多个参数来当做下面那三条主SQL 的条件。 我想的是需要建个临时表,游标等于1的时候返回1条数据存到临时表然后游标等于2的时候在返回一条也存到临时表游标等于3的时候返回一条存到临时表, 现在就是不知道这种情况临时表该怎么用。 困扰了两天了,求大神们狠狠的教育

SQL Server如何在同一张表里进行行对比,输出某列值改变的行

# SQL SERVER 2012# 原始表见表一,记录的时候每个人每天的排班情况,有的人又是会改变班次,又shift 变为non-shift或者由non-shift变为shift。现在需要找出在当月排班改变的人的记录,输出另一张表。 比如这两个人,ID是786636和786656分别在8/10和7/27排班改变了,然后数据表二。 原始表数据较多,大概4万条,而且是动态的 每个月都会有更新。 ![图片说明](https://img-ask.csdn.net/upload/201611/23/1479869909_455247.jpg) ![图片说明](https://img-ask.csdn.net/upload/201611/23/1479869924_138498.jpg)

ORA-01000: 超出打开游标的最大数 如何处理?

先不考虑在oralce中增大游标数. 我的需求是先查询一张表,while(rs.next())进行处理,根据处理结果,分别先3个表插入或者更新数据(一个事物).使用的是proxool连接池.我先在程序中取得两个连接,一个查询,另一个进行批量更新删除.然后再循环中处理,循环末尾把批量删除preparestatement关掉,结果出现ora01000.后来改用statement的batch()还是出ora01000,忘高手可以教导方法解决这个问题,不甚感激.

将两张表的数据展示在一个ListView中

数据库中的数据如图所示,一共有5张表,三个数据表以及两个关系表。我现在需要将所有的project和exam读取出来然后将其中的name和description显示在同一个ListView中,根据数据表中的session sort no来排序。 现在的问题: 1.如何同时读取所有的exam和project数据并根据session sort no来排序呢?因为数据比较多,所以应该不会一次性完成读取,而是用类似SimpleCursorAdapter。 2.根据现有的数据库设计,有没有什么比较好的办法可以在adapter中很方便的判断是否从cursor中读取到的数据是exam还是project? 数据库设计如下: ![CSDN移动问答][1] [1]: http://ubuntuone.com/04ugzxXcGLraTKRQsCsUTW

MSSQL如果做字符串拼接的子查询

例子 表 A 列 ID0000 VALUE0 1 AAAAAA 2 BBBBBB 3 CCCCCC 表 B 列 ID0000 SQL000 7 SELECT VALUE0 FROM A WHERE ID0000='1' 8 SELECT VALUE0 FROM A WHERE ID0000='2' 9 SELECT VALUE0 FROM A WHERE ID0000='3' 想要的效果 用 SELECT 查询表 B的时候 得到 列 ID0000 SQL000 7 AAAAAA 8 BBBBBB 9 CCCCCC 想问下 除了用游标遍历每条数据去 执行语句替换值以外 是否还有 SELECT 子查询字符串的方式

SQL SERVER 上的一个简单查询,执行时间过长

最近在生产环境中发现一条查询脚本耗时很长,排查了一天没发现问题在哪,请大神帮帮忙! . **表结构说明:** * SPYCDMX.MXBH、SPYCD.DJBH、YSCYD.DJBH、CANGKU.CKDM 是主键; * SPYCD.YS、SPYCD.YSRQ、CANGKU.XZDM、SPYCDMX.DJBH、SPYCDMX.dc_sync_flag、SPYCDMX.dc_sync_guid 是非聚集索引; * SPYCDMX.dc_sync_guid 字段默认值是 NULL; * SPYCDMX 表有400多万行数据; . > **异常查询** ``` SELECT m.DJBH, mx.MXBH, mx.dc_sync_flag, mx.dc_sync_guid, mx.dc_sync_time FROM SPYCDMX mx INNER JOIN SPYCD m ON m.DJBH = mx.DJBH LEFT JOIN CANGKU ck ON ck.CKDM = m.DM1 LEFT JOIN YSCYD cy ON cy.DJBH = m.YDJH WHERE 1 = 1 AND m.YS = '1' AND m.YSRQ >= '2019-08-16' AND ck.XZDM = '1' AND cy.DJBH IS NOT NULL AND mx.dc_sync_flag = 'N' AND mx.dc_sync_guid IS NULL ``` 这段代码的执行时间长达3~5分钟! . > **尝试1** ``` SELECT m.DJBH, mx.MXBH, mx.dc_sync_flag, mx.dc_sync_guid FROM SPYCDMX mx INNER JOIN SPYCD m ON m.DJBH = mx.DJBH LEFT JOIN CANGKU ck ON ck.CKDM = m.DM1 LEFT JOIN YSCYD cy ON cy.DJBH = m.YDJH WHERE 1 = 1 AND m.YS = '1' AND m.YSRQ >= '2019-08-16' AND ck.XZDM = '1' AND cy.DJBH IS NOT NULL AND mx.dc_sync_flag = 'N' AND mx.dc_sync_guid IS NULL ``` 在 SELECT 字段中剔除 mx.dc_sync_time 列,执行时间缩减到十几秒! . > **尝试2** ``` SELECT m.DJBH, mx.MXBH, mx.dc_sync_flag, mx.dc_sync_guid FROM SPYCDMX mx INNER JOIN SPYCD m ON m.DJBH = mx.DJBH LEFT JOIN CANGKU ck ON ck.CKDM = m.DM1 LEFT JOIN YSCYD cy ON cy.DJBH = m.YDJH WHERE 1 = 1 AND m.YS = '1' AND m.YSRQ >= '2019-08-16' AND ck.XZDM = '1' AND cy.DJBH IS NOT NULL AND mx.dc_sync_flag = 'N' AND ISNULL(mx.dc_sync_guid, '') = '' ``` 把 WHERE 条件中的 AND mx.dc_sync_guid IS NULL 改为 AND ISNULL(mx.dc_sync_guid, '') = '',执行时间缩减到1~2秒! . 这是什么原因?

SQLServer 2008中怎样把所有数据库的结构相同的所有表的数据合并到一张表中?

问题:SQLServer 2008中怎样把所有数据库的结构相同的所有表的数据合并到一张表中?注意表的结构是相同的。 比如有10个数据库,他们的名字是有规律的,test1~test10 ,每个数据库中有200张表,表的结构相同,表名也是有规律的,分别是table1~table200,我想把这些数据发在一个数据库的一张表中,我觉得应该用游标来实现,但是我现在只能做到把一个数据库中的所有表放到一个表中,不能做到把所有数据库的表放在一个表中,求解答!! 还有就是存放所有数据库的所有表的那个系统表是哪个?我现在只知道每个数据库中存放本数据库的所有表的那个系统表。

如何为SQL存储过程的参数赋值为另一张表查询的结果集,让存储过程按照这个结果集依次执行所有结果集

sql数据库中有表 inventory,表中有字段 cinvcode,值为1,2,3,4,5,6... 我写了个存储过程gylxqj,这个存储过程中使用到参数 @cinvcode 执行存储过程时,输入一个cinvcode的值比如2,得出一个结果,这样只能输入一个查询一个。 有没有办法把 表inventory中字段cinvcode的所有值赋值给参数@cinvcode,让 存储过程gylxqj依次执行inventory中字段cinvcode的所有值,再把每个值执行的结果 在一张表上体现出来? 我试过用游标,但是一直在循环执行,跳不出来。不知道还有没有其它的方式。

java调用存储过程来分页:java.sql.SQLException: Ref 游标无效

<p>请各位帮忙,我看了两天也看出怎么错了。</p> <p> </p> <p>plsql代码:</p> <p> </p> <p>SQL&gt; create or replace package testpackage as        <span style="color: #978b68;">--创建包用来放游标<br></span>  2  type test_cursor is ref cursor;                               <span style="color: #978b68;">--定义的游标test_cursor,ref curosr用法还不是很熟<br></span>  3  end testpackage;<br>  4  /</p> <p>Package created</p> <p> </p> <p>SQL&gt; create or replace procedure fenye(<br>  2                                    v_tablename in varchar2,    <span style="color: #978b68;">--输入的表名,根据不同的表来分页<br></span>  3                                    v_pagenow   in number,      <span style="color: #978b68;">--分页时当前页码<br></span>  4                                    v_pagesize  in number,       <span style="color: #978b68;">--每页的页数<br></span>  5                                    v_mypagecount out number,        <span style="color: #978b68;">--计算出一共多少页<br></span>  6                                    v_myrows          out number,        <span style="color: #978b68;">--计算表中一共多少行<br></span>  7                                    p_cursor out testpackage.test_cursor      <span style="color: #978b68;">--要输出的游标<br></span>  8                                    )<br>  9  is<br> 10    v_sql   varchar2(1000);<br> 11    v_begin number:=(v_pagenow-1)*v_pagesize+1;   <span style="color: #978b68;">--计算初始页,既从哪页开始<br></span> 12    v_end   number:=v_pagenow*v_pagesize;              <span style="color: #978b68;">--计算结束页,既从哪页结束</span></p> <p><span style="color: #978b68;"><br></span> 13  begin       --<br> 14    v_sql:='select *<br> 15                 from   (select b.*,<br> 16                                      rownum as rn<br> 17                            from  (select *<br> 18                                      from '||v_tablename||'<br> 19                                      order by sal desc) b<br> 20                            where rownum&lt;='||v_end||')<br> 21                where  rn&gt;='||v_begin;</p> <p><br> 22    open p_cursor for v_sql;</p> <p><br> 23    v_sql:='select count(*) from '||v_tablename;<br> 24    execute immediate v_sql into v_myrows;</p> <p><br> 25    if mod(v_myrows,v_pagesize)=0 then<br> 26    v_mypagecount:=v_myrows/v_pagesize;<br> 27    else<br> 28    v_mypagecount:=v_myrows/v_pagesize+1;<br> 29    end if;</p> <p><br> 30    close p_cursor;<br> 31  end;<br> 32  /</p> <p>Procedure created</p> <p> </p> <p>java代码:</p> <p> </p> <p><span style="color: #a9b34b;">import java.sql.*;</span></p> <p> </p> <p><span style="color: #a9b34b;">public class TestProcedure<br>{ <br>  public static void main(String args[]){<br>     try{<br>         <br>         Class.forName("oracle.jdbc.driver.OracleDriver");<br>         Connection con = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:MYORACLE","SCOTT","TIGER");</span></p> <p><span style="color: #a9b34b;"> <p><br>         CallableStatement call=con.prepareCall("{call fenye(?,?,?,?,?,?)}");<span style="color: #000000;">--分页过程的6个参数</span></p> <p><span style="color: #000000;"><br></span>         call.setString(1,"emp");<br>         call.setInt(2,3);<br>         call.setInt(3,2);</p> <p><br>         call.registerOutParameter(4,oracle.jdbc.OracleTypes.INTEGER);<br>         call.registerOutParameter(5,oracle.jdbc.OracleTypes.INTEGER);<br>         call.registerOutParameter(6,oracle.jdbc.OracleTypes.CURSOR);-<span style="color: #000000;">-输出的游标</span></p> <p><br>         call.execute();</p> <p><br>         int rowNum=call.getInt(4);<br>         int pageCount=call.getInt(5);</p> <p><br>        //System.out.println("rowNum:"+rowNum);<br>        //System.out.println("pageCount:"+pageCount);</p> <p><br>         ResultSet rs=(ResultSet) ((OracleCallableStatement)call).getObject(6);   <span style="color: #000000;">--提示有错误</span></p> <p> </p> <span style="color: #a9b34b;"> <p> </p> </span></span></p> <p><span style="color: #a9b34b;">         while(rs.next()){<br>             System.out.println("编号:"+rs.getInt(1)+" "+"名字:"+rs.getString(2));<br>        }<br>         rs.close();<br>         con.close();<br>         call.close();<br>     }<br>     catch(Exception e){<br>         e.printStackTrace();<br>     }<br>  }<br>}</span></p> <p> </p> <p><span style="color: #000000;">错误Exception:</span></p> <p> </p> <p>rowNum:7<br>pageCount:14</p> <p><br>java.sql.SQLException: Ref 游标无效<br> at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)<br> at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)<br> at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:285)<br> at oracle.jdbc.driver.OracleStatement.getCursorValue(OracleStatement.java:3211)<br> at oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:5036)<br> at oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:4964)<br> at oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:586)<br> at com.neusoft.TestProcedure.main(TestProcedure.java:26)</p> <p> </p>

学Python后到底能干什么?网友:我太难了

感觉全世界营销文都在推Python,但是找不到工作的话,又有哪个机构会站出来给我推荐工作? 笔者冷静分析多方数据,想跟大家说:关于超越老牌霸主Java,过去几年间Python一直都被寄予厚望。但是事实是虽然上升趋势,但是国内环境下,一时间是无法马上就超越Java的,也可以换句话说:超越Java只是时间问题罢。 太嚣张了会Python的人!找工作拿高薪这么简单? https://edu....

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

为什么程序猿都不愿意去外包?

分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助

Java校招入职华为,半年后我跑路了

何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

@程序员:GitHub这个项目快薅羊毛

今天下午在朋友圈看到很多人都在发github的羊毛,一时没明白是怎么回事。 后来上百度搜索了一下,原来真有这回事,毕竟资源主义的羊毛不少啊,1000刀刷爆了朋友圈!不知道你们的朋友圈有没有看到类似的消息。 这到底是啥情况? 微软开发者平台GitHub 的一个区块链项目 Handshake ,搞了一个招募新会员的活动,面向GitHub 上前 25万名开发者派送 4,246.99 HNS币,大约价...

用python打开电脑摄像头,并把图像传回qq邮箱【Pyinstaller打包】

前言: 如何悄悄的打开朋友的摄像头,看看她最近过的怎么样,嘿嘿!这次让我带你们来实现这个功能。 注: 这个程序仅限在朋友之间开玩笑,别去搞什么违法的事情哦。 代码 发送邮件 使用python内置的email模块即可完成。导入相应的代码封装为一个send函数,顺便导入需要导入的包 注: 下面的代码有三处要修改的地方,两处写的qq邮箱地址,还有一处写的qq邮箱授权码,不知道qq邮箱授权码的可以去百度一...

C++(继承):19---虚基类与虚继承(virtual)

一、菱形继承 在介绍虚继承之前介绍一下菱形继承 概念:A作为基类,B和C都继承与A。最后一个类D又继承于B和C,这样形式的继承称为菱形继承 菱形继承的缺点: 数据冗余:在D中会保存两份A的内容 访问不明确(二义性):因为D不知道是以B为中介去访问A还是以C为中介去访问A,因此在访问某些成员的时候会发生二义性 缺点的解决: 数据冗余:通过下面“虚继承”技术来解决(见下) 访问...

计算机网络——浅析网络层

一、前言 注意,关于ipv4和ipv6,ipv4是ip协议第4版本,也表示这个版本的ip一共4个字节,同样地,ipv6是ip协议第6版本,也表示这个版本的ip一共6个字节。 关于网络层使用路由器实现互联:在计算机网络的分层结构中,不同层有不同的中继设备: 计算机网络层 中继设备/中继系统 物理层 中继器、集线器Hub 数据链路层 网桥或交换机(交换机是多端口网桥,两者本质上是一个东西) 网络层 路...

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

华为初面+综合面试(Java技术面)附上面试题

华为面试整体流程大致分为笔试,性格测试,面试,综合面试,回学校等结果。笔试来说,华为的难度较中等,选择题难度和网易腾讯差不多。最后的代码题,相比下来就简单很多,一共3道题目,前2题很容易就AC,题目已经记不太清楚,不过难度确实不大。最后一题最后提交的代码过了75%的样例,一直没有发现剩下的25%可能存在什么坑。 笔试部分太久远,我就不怎么回忆了。直接将面试。 面试 如果说腾讯的面试是挥金如土...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

总结了 150 余个神奇网站,你不来瞅瞅吗?

原博客再更新,可能就没了,之后将持续更新本篇博客。

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

女朋友过生日,我花了20分钟给她写了一个代理服务器

女朋友说:“看你最近挺辛苦的,我送你一个礼物吧。你看看想要什么,我来准备。” 我想了半天,从书到鞋子到电子产品最后到生活用品,感觉自己什么都不缺,然后和她说:“你省省钱吧,我什么都不需要。” 她坚持要送:“不行,你一定要说一个礼物,我想送你东西了。” 于是,我认真了起来,拿起手机,上淘宝逛了几分钟,但还是没能想出来缺点什么,最后实在没办法了:“这样吧,如果你实在想送东西,那你就写一个代理服务器吧”...

记一次腾讯面试,我挂在了最熟悉不过的队列上……

腾讯后台面试,面试官问:如何自己实现队列?

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

2020阿里全球数学大赛:3万名高手、4道题、2天2夜未交卷

阿里巴巴全球数学竞赛( Alibaba Global Mathematics Competition)由马云发起,由中国科学技术协会、阿里巴巴基金会、阿里巴巴达摩院共同举办。大赛不设报名门槛,全世界爱好数学的人都可参与,不论是否出身数学专业、是否投身数学研究。 2020年阿里巴巴达摩院邀请北京大学、剑桥大学、浙江大学等高校的顶尖数学教师组建了出题组。中科院院士、美国艺术与科学院院士、北京国际数学...

HTTP与HTTPS的区别

面试官问HTTP与HTTPS的区别,我这样回答让他竖起大拇指!

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

立即提问
相关内容推荐