当前位置:首页 » 存储配置 » oracle存储过程例子

oracle存储过程例子

发布时间: 2022-09-10 12:19:27

‘壹’ oracle中登录的存储过程例子

create or replace procere usp_login(i_name varchar,i_pwd varchar,o_infocode out number,o_infotext out varchar)
is
v_cnt int;
begin
select count(*) into v_cnt from usertable where username=v_name;
if v_cnt = 0 then
o_infocode:=11;
o_infotext:='用户不存在';
return;
end if;
select count(*) into v_cnt from usertable where username=v_name and userpwd=v_pwd;
if v_cnt = 0 then
o_infocode:=12;
o_infotext:='密码不正确!';
return;
else
o_infocode:=0;
o_infotext:='登陆成功!';
end if;
return;

end;

‘贰’ 新手学习 Oracle存储过程怎么编写

示例参考:
建立存储过程
CREATE OR REPLACE PROCEDURE P_name--存储过程名字
(
i_var in int, --输入参数1
o_var OUT varchar2 --输出参数1
)
IS
v_STR VARCHAR2(200); --定义存储过程内部的局部变量
BEGIN
--下面是存储过程的主体实现部分
v_STR := i_var;
dbms_output.put_line(v_STR);
o_var := v_STR;
exception--错误异常处理部分
when others then
dbms_output.put_line(sqlerrm);--打印错误信息
END P_name

‘叁’ Oracle 的存储过程怎么写。

oracle 存储过程的基本语法

1.基本结构
CREATE OR REPLACE PROCEDURE 存储过程名字
(
参数1 IN NUMBER,
参数2 IN NUMBER
) IS
变量1 INTEGER :=0;
变量2 DATE;
BEGIN

END 存储过程名字

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的存储过程都用在什么地方最好能举几个工作中的例子

存储过程最多的用于C/S两层架构模式下,用于在后台处理业务逻辑和数据。
前台开发工具例如PowerBuilder可以实现界面展示和操作流程,涉及到后台某个集中处理数据、或者大批量数据的业务逻辑,就在Oracle后台存储过程里面来实现了。

卸载存储过程里面的东西,往往是不需要交互的一段处理过程,例如前台界面是“结算”业务,输入了结算时间段和结算单位以及相关的控制参数例如结算方法等,把这些参数传给后台存储过程,后台存储过程里面可以编制相关的结算处理程序,根据输入的单位、时间、方法类型等参数,来进行集中处理,这个过程是不需要与前台进行交互的,这里可以处理很复杂的业务,例如结算会涉及到多个表如单位基本信息表、单位结算信息表、明细表等等,可以在存储过程里面集中实现处理,然后把结果返回给前台,前台根据处理结果是否成功,决定是否进行提交(COMMIT)操作。

‘伍’ ORACLE如何创建存储过程,详细例子。

--创建存储过程 IN_SHEETID 为输入参数CREATE OR REPLACE <a class="-highlight" href="https://www..com/s?wd=PROCEDURE&tn=44039180_cpr&fenlei=-EUBtkP1n1n1RdPjTvP1bvrH6kP10L" target="_blank">PROCEDURE</a> ST_RECEIPT(IN_SHEETID VARCHAR2) ISBEGIN--将 receipt0表中数据插入 receiptINSERT INTO RECEIPTSELECT * FROM RECEIPT0 WHERE SHEETID = IN_SHEETID;--更新receipt表中Flag值UPDATE RECEIPT SET FLAG = 100 WHERE SHEETID = IN_SHEETID;--INSERT INTO RECEIPTITEMSELECT * FROM RECEIPTITEM0 WHERE SHEETID = IN_SHEETID;--删除ReceiptItem0表数据DELETE FROM RECEIPTITEM0 WHERE SHEETID = IN_SHEETID;--删除 receipt0表数据DELETE FROM RECEIPT0 WHERE SHEETID = IN_SHEETID;<a class="-highlight" href="https://www..com/s?wd=END&tn=44039180_cpr&fenlei=-EUBtkP1n1n1RdPjTvP1bvrH6kP10L" target="_blank">END</a>;--调用存储过程BEGINST_RECEIPT('ys141128');<a class="-highlight" href="https://www..com/s?wd=END&tn=44039180_cpr&fenlei=-EUBtkP1n1n1RdPjTvP1bvrH6kP10L" target="_blank">END</a>;--或者EXEC ST_RECEIPT('ys141128');

‘陆’ ORACLE存储过程的写法。

oracle 存储过程的基本语法 1.基本结构 CREATE OR REPLACE PROCEDURE 存储过程名字 ( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS 变量1 INTEGER :=0; 变量2 DATE; BEGIN END 存储过程名字 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 or replace PROCEDURE st_receipt(p_sheetid varchar2(16))
AS
BEGIN
insert into receipt select * from receipt0 where sheetid=p_sheetid ; --将 receipt0表中数据插入 receipt
update receipt set Flag=100 wheresheetid=p_sheetid; --更新receipt表中Flag值

insert into ReceiptItem select * from ReceiptItem0 where sheetid=p_sheetid ;

delete from ReceiptItem0 where sheetid=p_sheetid ;--删除ReceiptItem0表数据
delete from receipt0 where sheetid=p_sheetid ; --删除 receipt0表数据
end ;

exec st_receipt('ys141128')

‘捌’ oracle存储过程中如何对一个变量累加赋值 最好有个例子

1、首先打开oracle数据库,如下图所示。

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

1 CREATE OR REPLACE PROCEDURE 存储过程名
2 IS
3 BEGIN
4 NULL;
5 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体的结束.
存储过程创建语法:
create or replace procere 存储过程名(param1 in type,param2 out type)
as
变量1 类型(值范围); --vs_msgVARCHAR2(4000);
变量2 类型(值范围);
Begin
Select count(*) into 变量1 from 表A where列名=param1;

If (判断条件) then
Select 列名 into 变量2 from 表A where列名=param1;
Dbms_output。Put_line(‘打印信息’);
Elsif (判断条件) then
Dbms_output。Put_line(‘打印信息’);
Else
Raise 异常名(NO_DATA_FOUND);
End if;
Exception
When others then
Rollback;
End;

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

create table TESTTABLE
(
id1 VARCHAR2(12),
name VARCHAR2(32)
)
select t.id1,t.name from TESTTABLE t
insert 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 procere test_count
as
v_total number(1);
begin
select 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 procere
test_count;
end;

create or replace procere TEST_LIST
AS
---是用游标
CURSOR test_cursor IS select t.id1,t.name from TESTTABLE t;
begin
for 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_LIST
begin
TEST_LIST;
END;
---存储过程的参数
---IN 定义一个输入参数变量,用于传递参数给存储过程
--OUT 定义一个输出参数变量,用于从存储过程获取数据
---IN OUT 定义一个输入、输出参数变量,兼有以上两者的功能
--这三种参数只能说明类型,不需要说明具体长度 比如 varchar2(12),defaul 可以不写,但是作为一个程序员最好还是写上。

---创建有参数的存储过程
create or replace procere test_param(p_id1 in VARCHAR2 default '0')
as v_name varchar2(32);
begin
select t.name into v_name from TESTTABLE t where t.id1=p_id1;
DBMS_OUTPUT.put_line('name:'||v_name);
end;
----执行存储过程
begin
test_param('1');
end;

default '0'

---创建有参数的存储过程
create or replace procere test_paramout(v_name OUT VARCHAR2 )
as
begin
select name into v_name from TESTTABLE where id1='1';
DBMS_OUTPUT.put_line('name:'||v_name);
end;
----执行存储过程
DECLARE
v_name VARCHAR2(32);
BEGIN
test_paramout(v_name);
DBMS_OUTPUT.PUT_LINE('name:'||v_name);
END;
-------IN OUT
---创建存储过程
create or replace procere test_paramINOUT(p_phonenumber in out varchar2)
as
begin
p_phonenumber:='0571-'||p_phonenumber;
end;

----
DECLARE
p_phonenumber VARCHAR2(32);
BEGIN
p_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
source

TEXT 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 OUT
SQL>
---查看当前的存储过程的状态是否正确,
---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 object
TYPE VARCHAR2(17) Y Type of the object
REFERENCED_OWNER VARCHAR2(30) Y Owner of referenced object (remote owner if remote object)
REFERENCED_NAME VARCHAR2(64) Y Name of referenced object
REFERENCED_TYPE VARCHAR2(17) Y Type of referenced object
REFERENCED_LINK_NAME VARCHAR2(128) Y Name of dblink if this is a remote object
SCHEMAID NUMBER Y
DEPENDENCY_TYPE VARCHAR2(4) Y
SQL>
---查询存储过程TEST_COUNT的依赖关系
SELECT REFERENCED_NAME,REFERENCED_TYPE FROM USER_DEPENDENCIES WHERE NAME='TEST_COUNT';

热点内容
国服没有脚本吗 发布:2025-03-13 02:52:57 浏览:702
机器人解压 发布:2025-03-13 02:52:18 浏览:955
怎么在服务器上部署网站 发布:2025-03-13 02:52:15 浏览:207
android弹出键盘布局 发布:2025-03-13 02:46:22 浏览:379
单耳安卓蓝牙耳机怎么使用教程 发布:2025-03-13 02:36:22 浏览:518
配置apache以域名访问 发布:2025-03-13 02:22:34 浏览:559
android视频录制播放 发布:2025-03-13 02:10:32 浏览:601
php从数据库中读取数据 发布:2025-03-13 02:10:27 浏览:942
热血传奇任务脚本 发布:2025-03-13 02:06:16 浏览:303
t4服务器什么牌子好 发布:2025-03-13 02:02:39 浏览:633