C#对Oracle存储过程的调用--创建表
C#对Oracle存储过程的调用
declare num number
C#对Oracle存储过程的调用
begin 
C#对Oracle存储过程的调用
select count(1into num from user_tables where table_name='SRCT';   --判断当前要创建的表在数据库中是否存在.
C#对Oracle存储过程的调用
if num>0 
C#对Oracle存储过程的调用
then execute immediate 'drop table '||'SRCT'--表名要大写
C#对Oracle存储过程的调用
end if
C#对Oracle存储过程的调用
execute immediate 'CREATE TABLE SRCT
C#对Oracle存储过程的调用(  
C#对Oracle存储过程的调用  SN  char(11), 
C#对Oracle存储过程的调用  XM  varchar2(30),  --姓名 
C#对Oracle存储过程的调用  KSCJ  number(3),   --考试成绩
C#对Oracle存储过程的调用  KSRQ  Date         --考试日期
C#对Oracle存储过程的调用      
C#对Oracle存储过程的调用)
'
C#对Oracle存储过程的调用
end;
C#对Oracle存储过程的调用
/
C#对Oracle存储过程的调用
commit;
C#对Oracle存储过程的调用
/
C#对Oracle存储过程的调用
C#对Oracle存储过程的调用
--注:上面的表名要大写.

C#对Oracle存储过程的调用--插入数据
C#对Oracle存储过程的调用
declare
C#对Oracle存储过程的调用maxrecords constant 
int:=50;
C#对Oracle存储过程的调用
int:=1;
C#对Oracle存储过程的调用
begin
C#对Oracle存储过程的调用
for i in 1..maxrecords
C#对Oracle存储过程的调用loop
C#对Oracle存储过程的调用
insert into SRCT(SN,XM,KSCJ,KSRQ)values(i,'frj'||i,i+10,sysdate);
C#对Oracle存储过程的调用
end loop
C#对Oracle存储过程的调用
--dbms_output.put_line('成功录入数据!');
C#对Oracle存储过程的调用
commit;
C#对Oracle存储过程的调用
end;
C#对Oracle存储过程的调用
/
C#对Oracle存储过程的调用
--查询数据,检查数据插入操作是否成功.
C#对Oracle存储过程的调用
SELECT * FROM SRCT WHERE ROWNUM<3;
C#对Oracle存储过程的调用
/

C#对Oracle存储过程的调用--检查存储过程是否存在
C#对Oracle存储过程的调用
declare 
C#对Oracle存储过程的调用num 
number;
C#对Oracle存储过程的调用msg 
varchar2(30):= '数据库中不存在该存储过程';
C#对Oracle存储过程的调用
begin
C#对Oracle存储过程的调用  
select   count(1into num    
C#对Oracle存储过程的调用  
from   user_objects     
C#对Oracle存储过程的调用  
where   object_type   = 'PROCEDURE'   
C#对Oracle存储过程的调用  
and   object_name='WRITE_SRC'  ;
C#对Oracle存储过程的调用  
C#对Oracle存储过程的调用  
if num>0 
C#对Oracle存储过程的调用  
then 
C#对Oracle存储过程的调用      msg:
= '该存储过程已经存在';
C#对Oracle存储过程的调用  
end if;
C#对Oracle存储过程的调用  dbms_output.put_line(msg); 
C#对Oracle存储过程的调用
end ;
C#对Oracle存储过程的调用
/

C#对Oracle存储过程的调用--创建存储过程
C#对Oracle存储过程的调用
CREATE OR REPLACE Procedure 
C#对Oracle存储过程的调用WRITE_SRC( M_SN 
in char  , M_XM in  varchar2,M_KSCJ in integer,
C#对Oracle存储过程的调用M_KSRQ 
in Date,RES out integer,ERR out
C#对Oracle存储过程的调用
varchar2)
C#对Oracle存储过程的调用
as
C#对Oracle存储过程的调用V_COUNT 
number:=0;
C#对Oracle存储过程的调用  
Begin
C#对Oracle存储过程的调用  
C#对Oracle存储过程的调用  RES:
=-2;
C#对Oracle存储过程的调用  ERR:
='数据库中不存在该纪录,更新失败.';
C#对Oracle存储过程的调用  
select count(SN) INTO V_COUNT 
C#对Oracle存储过程的调用  
FROM SRCT 
C#对Oracle存储过程的调用  
Where  SN=M_SN AND XM=M_XM;
C#对Oracle存储过程的调用  
C#对Oracle存储过程的调用  
IF V_COUNT>0 THEN 
C#对Oracle存储过程的调用    
Update SRCT
C#对Oracle存储过程的调用    
Set KSCJ=M_KSCJ,KSRQ=M_KSRQ
C#对Oracle存储过程的调用    
Where  SN=M_SN AND XM=M_XM;
C#对Oracle存储过程的调用    
Commit;
C#对Oracle存储过程的调用    RES:
=1;
C#对Oracle存储过程的调用    ERR:
='更新成功!';
C#对Oracle存储过程的调用   
return;
C#对Oracle存储过程的调用  
END IF;
C#对Oracle存储过程的调用  exception
C#对Oracle存储过程的调用    
when others then
C#对Oracle存储过程的调用     RES:
=-1;
C#对Oracle存储过程的调用     ERR:
='更新失败';
C#对Oracle存储过程的调用   
return ;
C#对Oracle存储过程的调用
End  ;
C#对Oracle存储过程的调用
/
C#对Oracle存储过程的调用
C#对Oracle存储过程的调用
commit;
C#对Oracle存储过程的调用
/

C#对Oracle存储过程的调用
C#对Oracle存储过程的调用
--调用存储过程
C#对Oracle存储过程的调用
declare 
C#对Oracle存储过程的调用res 
int;
C#对Oracle存储过程的调用err 
Varchar2(80);
C#对Oracle存储过程的调用
Begin
C#对Oracle存储过程的调用res:
='3';
C#对Oracle存储过程的调用err:
='更新成功';
C#对Oracle存储过程的调用WRITE_SRC(
'1','frj1',300,sysdate,res,err);
C#对Oracle存储过程的调用
COMMIT;
C#对Oracle存储过程的调用dbms_output.put_line(res);
C#对Oracle存储过程的调用dbms_output.put_line(err); 
C#对Oracle存储过程的调用
End;
C#对Oracle存储过程的调用
/
C#对Oracle存储过程的调用
C#对Oracle存储过程的调用
select sn,xm,kscj from srct WHERE SN='1' AND XM='frj1';
C#对Oracle存储过程的调用
/

C#对Oracle存储过程的调用--注:易犯错误
C#对Oracle存储过程的调用--
以上语句均在"SQL*Plus 工作单"上运行;
C#对Oracle存储过程的调用

C#对Oracle存储过程的调用  
1.每一个小单元的语句后要加';'号;
C#对Oracle存储过程的调用  
2.不能将字符串赋值的单引号写成双引号;
C#对Oracle存储过程的调用    如: err:
='更新成功!'; 不能写成 err:="更新成功!";
C#对Oracle存储过程的调用    以上错误系统将提示:"警告: 创建的过程带有编译错误。"
C#对Oracle存储过程的调用  
3.存储过程传递与赋值的参数名称,个数,类型(字段类型,返回的类型(in/out))要与调用的存储过程以及该存储过程
C#对Oracle存储过程的调用    所访问的表中相应的字段类型严格对应.
C#对Oracle存储过程的调用    还有一些约定的写法也需遵守.
C#对Oracle存储过程的调用    如:其中的" M_KSCJ "对应表中的" KSCJ "字段, 应写成(M_KSCJ 
in integer)不能写成( M_KSCJ in  number(3));
C#对Oracle存储过程的调用    "M_SN"对应表中的 "SN" 字段,应写成 (M_SN 
in char) 不能写成 (M_SN in Varchar2)
C#对Oracle存储过程的调用  
4.在c#中进行调用时,还要注意它的输入/输出类型,如上例中的" out integer res "  为输出类型,应将其
C#对Oracle存储过程的调用      OracleParameter
[] parm = new OracleParameter[1];
C#对Oracle存储过程的调用      parm
[0] = new OracleParameter("RES", OracleType.Int16   );
C#对Oracle存储过程的调用      parm
[0].Direction = ParameterDirection.Output  ; --将其设为输出类型;
C#对Oracle存储过程的调用
      具体调用方法将在稍后进行介绍;
C#对Oracle存储过程的调用  
5.定义存储过程时,其参数名称最好不要与字段名称同名(不区分大小写);
C#对Oracle存储过程的调用     如上面的存储过程建议不要写成:
C#对Oracle存储过程的调用     WRITE_SRC( SN 
in char  , XM in  varchar2,KSCJ in integer,
C#对Oracle存储过程的调用                KSRQ 
in Date,RES out integer,ERR out varchar2)

C#对Oracle存储过程的调用//--在c#中的调用
C#对Oracle存储过程的调用
 
C#对Oracle存储过程的调用 
C#对Oracle存储过程的调用   
public int upInfo(string m_sn,string m_sxm,int m_ikscj,DateTime m_dksrq, out int m_ires, out string m_serr)

C#对Oracle存储过程的调用--按时间段分页显示
C#对Oracle存储过程的调用
 
C#对Oracle存储过程的调用
select sn,xm,kscj,ksrq from SRCT  
C#对Oracle存储过程的调用
where ksrq between  to_date('2003-01-01','yyyy-mm-dd')   and   to_date('2007-06-28','yyyy-mm-dd'order by ksrq;
C#对Oracle存储过程的调用
/
C#对Oracle存储过程的调用
C#对Oracle存储过程的调用
C#对Oracle存储过程的调用
select * from 
C#对Oracle存储过程的调用
select b.*,rownum row_num from
C#对Oracle存储过程的调用    (
C#对Oracle存储过程的调用     
select  sn,xm,kscj,ksrq from SRCT  c
C#对Oracle存储过程的调用     
where ksrq between  to_date('2003-01-01','yyyy-mm-dd')   and   to_date('2007-06-28','yyyy-mm-dd'order by c.sn 
C#对Oracle存储过程的调用     )b
C#对Oracle存储过程的调用)a 
where a.row_num between 1 and 10
C#对Oracle存储过程的调用
C#对Oracle存储过程的调用
/
C#对Oracle存储过程的调用
--注: oracle的rownum是在提取记录时就已经生成,它先于排序操作,所以必须使用子查询先排序.

C#对Oracle存储过程的调用--==转oracle分页存储过程==
C#对Oracle存储过程的调用
CREATE OR REPLACE  PACKAGE DotNet  is
C#对Oracle存储过程的调用
C#对Oracle存储过程的调用  TYPE type_cur 
IS REF CURSOR;     --定义游标变量用于返回记录集
C#对Oracle存储过程的调用
  PROCEDURE DotNetPagination
C#对Oracle存储过程的调用  (
C#对Oracle存储过程的调用  Pindex 
in number,                --分页索引
C#对Oracle存储过程的调用
  Psql in varchar2,                --产生dataset的sql语句
C#对Oracle存储过程的调用
  Psize in number,                 --页面大小
C#对Oracle存储过程的调用
  Pcount out number,               --返回分页总数
C#对Oracle存储过程的调用
  v_cur out type_cur               --返回当前页数据记录
C#对Oracle存储过程的调用
  );
C#对Oracle存储过程的调用  
procedure DotNetPageRecordsCount
C#对Oracle存储过程的调用  (
C#对Oracle存储过程的调用  Psqlcount 
in varchar2,           --产生dataset的sql语句
C#对Oracle存储过程的调用
  Prcount   out number             --返回记录总数
C#对Oracle存储过程的调用
  );
C#对Oracle存储过程的调用
end DotNet;
C#对Oracle存储过程的调用
/
C#对Oracle存储过程的调用
CREATE OR REPLACE  PACKAGE BODY DotNet  is
C#对Oracle存储过程的调用 
--***************************************************************************************
C#对Oracle存储过程的调用
  PROCEDURE DotNetPagination
C#对Oracle存储过程的调用  (
C#对Oracle存储过程的调用  Pindex 
in number,
C#对Oracle存储过程的调用  Psql 
in varchar2,
C#对Oracle存储过程的调用  Psize 
in number,
C#对Oracle存储过程的调用  Pcount out 
number,
C#对Oracle存储过程的调用  v_cur out type_cur
C#对Oracle存储过程的调用  )
C#对Oracle存储过程的调用  
AS
C#对Oracle存储过程的调用  v_sql 
VARCHAR2(1000);
C#对Oracle存储过程的调用  v_count 
number;
C#对Oracle存储过程的调用  v_Plow 
number;
C#对Oracle存储过程的调用  v_Phei 
number;
C#对Oracle存储过程的调用  
Begin
C#对Oracle存储过程的调用  
------------------------------------------------------------取分页总数
C#对Oracle存储过程的调用
  v_sql := 'select count(*) from (' || Psql || ')';
C#对Oracle存储过程的调用  
execute immediate v_sql into v_count;
C#对Oracle存储过程的调用  Pcount :
= ceil(v_count/Psize);
C#对Oracle存储过程的调用  
------------------------------------------------------------显示任意页内容
C#对Oracle存储过程的调用
  v_Phei := Pindex * Psize + Psize;
C#对Oracle存储过程的调用  v_Plow :
= v_Phei - Psize + 1;
C#对Oracle存储过程的调用  
--Psql := 'select rownum rn,t.* from cd_ssxl t' ;            --要求必须包含rownum字段
C#对Oracle存储过程的调用
  v_sql := 'select * from (' || Psql || ') where rn between ' || v_Plow || ' and ' || v_Phei ;
C#对Oracle存储过程的调用  
open v_cur for v_sql;
C#对Oracle存储过程的调用  
End DotNetPagination;
C#对Oracle存储过程的调用 
--**************************************************************************************
C#对Oracle存储过程的调用
  procedure DotNetPageRecordsCount
C#对Oracle存储过程的调用  (
C#对Oracle存储过程的调用  Psqlcount 
in varchar2,
C#对Oracle存储过程的调用  Prcount   out 
number
C#对Oracle存储过程的调用  )
C#对Oracle存储过程的调用  
as
C#对Oracle存储过程的调用  v_sql 
varchar2(1000);
C#对Oracle存储过程的调用  v_prcount 
number;
C#对Oracle存储过程的调用  
begin
C#对Oracle存储过程的调用  v_sql :
= 'select count(*) from (' || Psqlcount || ')';
C#对Oracle存储过程的调用  
execute immediate v_sql into v_prcount;
C#对Oracle存储过程的调用  Prcount :
= v_prcount;                  --返回记录总数
C#对Oracle存储过程的调用
  end DotNetPageRecordsCount;
C#对Oracle存储过程的调用 
--**************************************************************************************
C#对Oracle存储过程的调用
end DotNet;
C#对Oracle存储过程的调用
C#对Oracle存储过程的调用
/
C#对Oracle存储过程的调用

C#对Oracle存储过程的调用//==使用示例==
    }

全文SQL
 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-07
  • 2021-11-30
  • 2022-01-08
猜你喜欢
  • 2021-09-25
  • 2021-10-17
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
相关资源
相似解决方案