您当前的位置:首页 > 文章摘抄 > 正文

oracle存储过程(oracle的存储过程)

本文目录

  • oracle的存储过程
  • oracle函数和存储过程有什么区别
  • Oracle 的存储过程怎么写
  • Oracle存储过程及举例(几种参数情况的存储
  • oracle存储过程如何输出信息
  • 怎么才oracle中查看存储过程
  • oracle中的存储过程,有什么作用
  • oracle中的存储过程怎么写
  • oracle怎么执行存储过程
  • Oracle数据库的存储过程怎么写

oracle的存储过程

第一步:找到procedures,右键新建 第二步:在name中输入存储过程名字(这里输入的就是你以后需要调用的名字),parameters后是参数,在里面定义参数的类型。 第三步:编写存储过程语句。4 第四步: 存储过程调用 CallableStatementcs=conn.divpareCall(“{callmymd_gis_pro(?,?,?,?,?)}“); //1代表第一个参数,setint表示参数类型是int型 cs.setInt(1,188); cs.setInt(2,12); cs.setInt(3,12); ...... //执行Oracle存储过程 cs.execute();

oracle函数和存储过程有什么区别

一、主体不同

1、函数:当需要分析数据清单中的数值是否符合特定条件时,使用数据库工作表函数。

2、存储过程:是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,一次编译后永久有效。

二、特点不同

1、函数:只能返回一个变量,可以嵌入sql中和存储过程中使用。

2、存储过程:用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。

三、功能不同

1、函数:不能用临时表,只能用表变量,函数不能执行一组修改全局数据库状态的操作。可以作为查询语句的一个部分来调用,由于函数可以返回一个表对象,所以在查询中位于from关键字后面。

2、存储过程:存储过程需要让sql的query可以执行,存储过程可以返回参数,如记录集。sql语句中不可以含有存储过程。

参考资料来源:百度百科-Oracle存储过程

参考资料来源:百度百科-数据库函数

Oracle 的存储过程怎么写

oracle 存储过程的基本语法1.基本结构CREATE OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER) IS变量1 INTEGER :=0;变量2 DATE;BEGINEND 存储过程名字2.SELECT INTO STATEMENT 将select查询的结果存入到变量中,可以同时将多个列存储多个变量中,必须有一条 记录,否则抛出异常(如果没有记录抛出NO_DATA_FOUND) 例子: BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN xxxx; END; ...3.IF 判断 IF V_TEST=1 THEN BEGIN do something END; END IF;4.while 循环 WHILE V_TEST=1 LOOP BEGIN XXXX END; END LOOP;5.变量赋值 V_TEST := 123;6.用for in 使用cursor ... IS CURSOR cur IS SELECT * FROM xxx; BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 END; END LOOP; END;7.带参数的cursor CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID; OPEN C_USER(变量值); LOOP FETCH C_USER INTO V_NAME; EXIT FETCH C_USER%NOTFOUND; do something END LOOP; CLOSE C_USER;8.用pl/sql developer debug 连接数据库后建立一个Test WINDOW 在窗口输入调用SP的代码,F9开始debug,CTRL+N单步调试

Oracle存储过程及举例(几种参数情况的存储

create table TESTTABLE(id1 VARCHAR2(12),name VARCHAR2(32))select t.id1,t.name from TESTTABLE tinsert into TESTTABLE (ID1, NAME)values (’1’, ’zhangsan’);insert into TESTTABLE (ID1, NAME)values (’2’, ’lisi’);insert into TESTTABLE (ID1, NAME)values (’3’, ’wangwu’);insert into TESTTABLE (ID1, NAME)values (’4’, ’xiaoliu’);insert into TESTTABLE (ID1, NAME)values (’5’, ’laowu’);---创建存储过程create or replace procedure test_countasv_total number(1);beginselect count(*) into v_total from TESTTABLE;DBMS_OUTPUT.put_line(’总人数:’||v_total);end;--准备--线对scott解锁:alter user scott account unlock; --应为存储过程是在scott用户下。还要给scott赋予密码---alter user scott identified by tiger;---去命令下执行EXECUTE test_count;----在ql/spl中的sql中执行begin-- Call the proceduretest_count;end;create or replace procedure TEST_LISTAS---是用游标CURSOR test_cursor IS select t.id1,t.name from TESTTABLE t;beginfor Test_record IN test_cursor loop---遍历游标,在打印出来DBMS_OUTPUT.put_line(Test_record.id1||Test_record.name);END LOOP;test_count;--同时执行另外一个存储过程(TEST_LIST中包含存储过程test_count)end;-----执行存储过程TEST_LISTbeginTEST_LIST;END;---存储过程的参数---IN 定义一个输入参数变量,用于传递参数给存储过程--OUT 定义一个输出参数变量,用于从存储过程获取数据---IN OUT 定义一个输入、输出参数变量,兼有以上两者的功能--这三种参数只能说明类型,不需要说明具体长度 比如 varchar2(12),defaul 可以不写,但是作为一个程序员最好还是写上。---创建有参数的存储过程create or replace procedure test_param(p_id1 in VARCHAR2 default ’0’)as v_name varchar2(32);beginselect t.name into v_name from TESTTABLE t where t.id1=p_id1;DBMS_OUTPUT.put_line(’name:’||v_name);end;----执行存储过程begintest_param(’1’);end;default ’0’---创建有参数的存储过程create or replace procedure test_paramout(v_name OUT VARCHAR2 )asbeginselect name into v_name from TESTTABLE where id1=’1’;DBMS_OUTPUT.put_line(’name:’||v_name);end;----执行存储过程DECLAREv_name VARCHAR2(32);BEGINtest_paramout(v_name);DBMS_OUTPUT.PUT_LINE(’name:’||v_name);END;-------IN OUT---创建存储过程create or replace procedure test_paramINOUT(p_phonenumber in out varchar2)asbeginp_phonenumber:=’0571-’||p_phonenumber;end;----DECLAREp_phonenumber VARCHAR2(32);BEGINp_phonenumber:=’26731092’;test_paramINOUT(p_phonenumber);DBMS_OUTPUT.PUT_LINE(’新的电话号码:’||p_phonenumber);END;-----sql命令下,查询当前用户的存储过程或函数的源代码,-----可以通过对USER_SOURCE数据字典视图的查询得到。USER_SOURCE的结构如下:SQL》 DESCRIBE USER_SOURCE ;Name Type Nullable Default Comments ---- -------------- -------- ------- -------------------------------------------------------------------------------------------------------------NAME VARCHAR2(30) Y Name of the object TYPE VARCHAR2(12) Y Type of the object: “TYPE“, “TYPE BODY“, “PROCEDURE“, “FUNCTION“,“PACKAGE“, “PACKAGE BODY“ or “JAVA SOURCE“LINE NUMBER Y Line number of this line of sourceTEXT VARCHAR2(4000) Y Source text SQL》---查询出存储过程的定义语句select text from user_source WHERE NAME=’TEST_COUNT’;----查询存储过程test_paramINOUT的参数SQL》 DESCRIBE test_paramINOUT;Parameter Type Mode Default?------------- -------- ------ --------P_PHONENUMBER VARCHAR2 IN OUTSQL》---查看当前的存储过程的状态是否正确,---VALID为正确,INVALID表示存储过程无效或需要重新编译SELECT STATUS FROM USER_OBJECTS WHERE OBJECT_NAME=’TEST_COUNT’;-----如果要检查存储过程或函数的依赖性,可以通过查询数据字典USER_DENPENDENCIES来确定,该表结构如下:SQL》 DESCRIBE USER_DEPENDENCIES;Name Type Nullable Default Comments-------------------- ------------- -------- ------- ----------------------------------------------------------NAME VARCHAR2(30) Name of the objectTYPE VARCHAR2(17) Y Type of the objectREFERENCED_OWNER VARCHAR2(30) Y Owner of referenced object (remote owner if remote object)REFERENCED_NAME VARCHAR2(64) Y Name of referenced objectREFERENCED_TYPE VARCHAR2(17) Y Type of referenced objectREFERENCED_LINK_NAME VARCHAR2(128) Y Name of dblink if this is a remote objectSCHEMAID NUMBER YDEPENDENCY_TYPE VARCHAR2(4) YSQL》---查询存储过程TEST_COUNT的依赖关系SELECT REFERENCED_NAME,REFERENCED_TYPE FROM USER_DEPENDENCIES WHERE NAME=’TEST_COUNT’;

oracle存储过程如何输出信息

可用DBMS_OUTPUT.PUT_LINE()对存储过程的进行输出。

编写存储过程:

create or replace procedure test_pro(in_num number)

as

M number;

begin

M := in_num;

if 0 《 M then

dbms_output.put_line(’输出SQL语句1’);

elsif M 《 3 then

dbms_output.put_line(’输出SQL语句2’);

else

dbms_output.put_line(’nothing’);

end if;

end;

扩展资料;

存储在数据库的数据字典中,存储在当前的应用中安全性由数据库提供安全保证,必须通过授权才能使用存储子程序,安全性靠应用程序来保证,如果能执行应用程序,就能执行该子程序。模式描述IN参数用来从调用环境中向存储过程传递值,不能给IN参数赋值,给此参数传递的值可以是常量、有值的变量、表达式等。

参考资料来源:百度百科-Oracle存储过程

怎么才oracle中查看存储过程

可用语句查看或用第三方工具查看。

一、语句查看方法:

1、执行语句:

SELECT text    FROM user_source   WHERE NAME = ’Procedure Name’ORDER BY line;--其中Procedure Name为存储过程名字,需要全部用大写英文。

2、如要查P_TEST的存储过程:

SELECT text    FROM user_source   WHERE NAME = ’P_TEST’ORDER BY line;

3、内容如下:

二、工具查看:

1、登录第三方工具(如pl/sql)登录到指定数据库。

2、左侧树中找到Procedures,然后找到相应的存储过程。

3、右键该存储过程,选择“查看”。

4、然后就可以看到了。

oracle中的存储过程,有什么作用

定义:存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句 集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数 (如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要 对象,任何一个设计良好的数据库应用程序都应该用到存储过程。 存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后 存储在数据库服务器中,应用程序使用时只要调用即可。在ORACLE 中, 若干个有联系的过程可以组合在一起构成程序包。优点:存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。 2.当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。 3.存储过程可以重复使用,可减少数据库开发人员的工作量。 4.安全性高,可设定只有某用户才具有对指定存储过程的使用权。你还是给我点分啥,写得我手都酸痛了。

oracle中的存储过程怎么写

Oracle存储过程写法实例 总结项目中写的存储过程例子: Oracle存储过程基本语法 存储过程   1 CREATE OR REPLACE PROCEDURE 存储过程名   2 IS/AS   3 BEGIN   4 NULL;   5 EXCEIPTION;   6 END; 1、创建存储过程,后面可用is或者as: create or replace procedure PRO_COMPLAIN_TEMPLATE as 2、定义变量,此处用到了%TYPE和%ROWTYPE,参考 /database/201211/168564.html ,另外定义了一个游标,TEM_INSTANCE TEMPLATE_CUR%ROWTYPE这个类型定义必须要在游标定义之后: NEED_DO_FOR_ZL INTEGER; CURRENT_MAX_ID MEMO_TEMPLET.TEMPLET_ID%TYPE; CURSOR TEMPLATE_CUR IS SELECT TEMPLET_NAME, TEMPLET_CONTENT FROM SYS_COMPLAINT_TEMPLET; TEM_INSTANCE TEMPLATE_CUR%ROWTYPE; 3、begin开始块: begin 4、该插入语句使用了DBLINK,还有使用DBMS_OUTPUT.put_line(’打印信息’)进行信息输出: insert into MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT, TEMPLET_TYPE, TEMPLET_MEMO) (SELECT * FROM MEMO_TEMPLET@COMPANY); SELECT COUNT(*) INTO NEED_DO_FOR_ZL FROM SYS_COMPLAINT_TEMPLET; IF(NEED_DO_FOR_ZL 》 0) THEN DBMS_OUTPUT.put_line(’打印信息’); SELECT MAX(TEMPLET_ID)+1 INTO CURRENT_MAX_ID FROM MEMO_TEMPLET; DBMS_OUTPUT.put_line(’MEMO_TEMPLET最大ID’ || CURRENT_MAX_ID); FOR TEM_INSTANCE IN TEMPLATE_CUR LOOP INSERT INTO MEMO_TEMPLET (TEMPLET_ID, TEMPLET_CONTENT, TEMPLET_TYPE, TEMPLET_MEMO) VALUES (CURRENT_MAX_ID, TEM_INSTANCE.TEMPLET_CONTENT, ’7’, NULL); CURRENT_MAX_ID := CURRENT_MAX_ID + 1; DBMS_OUTPUT.put_line(TEM_INSTANCE.TEMPLET_CONTENT); END LOOP; END IF; COMMIT; www.2cto.com 4、exception块,使用WHEN OTHERS THEN,其中用raise可显示错误信息: exception WHEN OTHERS THEN DBMS_OUTPUT.put_line(’sqlcode : ’ ||sqlcode); raise; ROLLBACK; IF TEMPLATE_CUR%ISOPEN THEN CLOSE TEMPLATE_CUR; END IF; DBMS_OUTPUT.put_line(’打印信息’); end; 注:关于游标的使用,如果像本例中使用for循环去遍历游标的话则不需要显式的去用open/close cursor打开和关闭游标,此处会自己处理,如果使用fetch into的话就需要显式开关游标,另外任意执行一个update操作,用隐式游标sql的属性%found,%notfound,%rowcount,%isopen观察update语句的执行情况,也可以使用来判断游标状态,如IF TEMPLATE_CUR%ISOPEN THEN。

oracle怎么执行存储过程

sqlplus或者PL/SQLSQL窗口输入(单独调用存储过程):无参数EXEC过程名;或者BEGIN过程名END;IN参数EXEC过程名(入参数..);或者BEGIN过程名(入参数...)END;OUT参数,INOUT参数variable绑定变量名数据类型;//定义一个变量接收出参数的值;EXEC过程名(:绑定变量名);

Oracle数据库的存储过程怎么写

Oracle存储过程基本语法:

CREATE OR REPLACE PROCEDURE 存储过程名 IS BEGIN NULL; END;

解释:

行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它; 行2: IS关键词表明后面将跟随一个PL/SQL体。 行3: BEGIN关键词表明PL/SQL体的开始。 行4: NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句; 行5: END关键词表明PL/SQL体的结束。


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: zeromq(为什么没有人用zeromq开发流媒体传输)

下一篇: 温婉柔美的意思(柔美的意思)



推荐阅读