程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle817與Oracle7.3.4存儲過程動態游標的區別

Oracle817與Oracle7.3.4存儲過程動態游標的區別

編輯:Oracle數據庫基礎

Oracle817下存儲過程改成Oracle7下,由於Oracle7下不支持OPEN CUR_1 FOR strSql1;--打開bill_tj_out的動態游標的寫法,采用CUR_1 := dbms_sql.open_cursor; --打開游標;方式打開游標。

下面的兩個存儲過程有相同的功能。

Oracle817下的動態游標存儲過程如下:

CREATE OR REPLACE PROCEDURE Pro_Remain_Merge_Win
(
p_orgid_win string,--窗口的ID號
p_userid string
)
is
TYPE My_CurType IS REF CURSOR;
CUR_1 My_CurType;--指示CUR_1的類型為My_CurType,而My_CurType是游標類型
CUR_2 My_CurType;--指示CUR_1的類型為My_CurType,而My_CurType是游標類型

strSql1 varchar2(3000);
strSql2 varchar2(3000);
strSql3 varchar2(3000);
t_bill_typeid number;--窗口發售的票據種類的ID號
t_orgid_zhan number;--窗口所在車站的ID號


--下面的為表合並時需要使用的臨時變量

t_bill_id_1 number;
t_bill_typeid_1 number;
t_bill_sign_1 varchar2(12);
t_start_no_1 number;
t_end_no_1 number;
t_all_num_1 number;
t_bill_time_1 date;
t_bill_time_1_yyyy number;--bill_time中的年
t_bill_time_1_mm number;--bill_time中的有

--
t_bill_id_2 number;
t_bill_id_2_merge number;--在表bill_tj_out_a表中,找到的可以合並的記錄的ID號
t_bill_typeid_2 number;
t_bill_sign_2 varchar2(12);
t_start_no_2 number;
t_end_no_2 number;
t_all_num_2 number;
t_bill_time_2 date;
t_bill_time_2_str varchar2(40);--日期的串格式,在更新時要使用
t_bill_time_2_yyyy number;--bill_time中的年
t_bill_time_2_mm number;--bill_time中的有
BEGIN

t_bill_id_2_merge:=0;--剛開始時的初始值

delete bill_tj_out_a where userid=p_userid;
commit;

 


--返回窗口使用的票據的種類
select nvl(bill_wintobilltype.billtypeid,0) into t_bill_typeid
from bill_org,bill_wintobilltype
where bill_org.org_id=bill_wintobilltype.winid
and bill_org.org_id=p_orgid_win;
--返回車站的ID號
select nvl(bill_org.parent_id,0) into t_orgid_zhan
from bill_org where org_id=p_orgid_win;

--execute dbms_output.enable(999999999999999999999);

strSql1:=''SELECT bill_id,bill_typeid,bill_sign,start_no,end_no, all_num,bill_time FROM bill_tj_out WHERE  userid=''||p_userid
||'' order by bill_sign,start_no,end_no'';

strSql2:=''SELECT bill_id,bill_typeid,bill_sign,start_no,end_no, all_num,bill_time FROM bill_tj_out_a WHERE  userid=''||p_userid
||'' order by bill_sign,start_no'';

delete bill_tj_out_a where userid=p_userid;
commit;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved