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

oracle存储过程的实例

发布时间: 2022-06-25 21:23:53

A. oracle存储过程的例子

基本语法:
create or replace procere p1 --存储过程名称
[(p_输入参数 in datatype数据类型,p_输出参数 out datatype数据类型)]
as
--v_变量名 datatype数据类型;也可声明程序中需要的变量
begin
--执行语句;增删改查
--[exception 异常处理]
end;
一般创建表不写存储过程:
create table USERS(
userid number(5) identity primary key,
username varchar2(20),
password varchar2(20)
);
insert into users values('AA','123');
insert into users values('bb','123');
查询的存储过程:输入用户名,查询密码
create or replace procere p1
(
p_username in users.username%type,p_password out users.password%type
)as
begin
select password into p_password from users where username=p_username;
exception
when no_data_found then dbms_output.put_line('用户不存在');
end;
create or replace procere p2
(
p_username in users.username%type,p_password in users.password%type
)as
begin
insert into users values(p_username,p_password);
end;

B. 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 procere 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。

C. 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');

D. 急求!怎么建立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')

E. oracle数据库存储过程实例

创建存储过程的语句如下:
CREATE[OR REPLACE] PROCEDURE<过程名>
<参数1>,“方式l]<数据类型1>,
<参数2>,[ 方式2]<数据类型2>,
……)
IS|AS (is或as完全等价)
BEGIN
PL/SQL过程体
END<过程名>

例如,下面是一个删除表的存储过程:

--参数:tableName 要删除的表名
create or replace procere del_table(tableName varchar2) as
--定义变量
sql_del_table long;
begin
--构造sql语句
sql_del_table := 'drop table ' || tableName;
--执行
EXECUTE IMMEDIATE sql_del_table;

end del_table;

F. oracle存储过程实例求教

首先说下本人最近在学习存储过程 网上的资料也比较的少和片面。搞了很久了还是没有学好(比较笨吧)。现在来求助高手 先谢了!! 现在有表信息如下:表名:user表字段:autoid number,username varchar2(32),password(32),email(32)四个字段明显autoid是主键 要求:写出地此表的crud操作。及java代码调用存储过程的代码 都贴出来 代码应该不是很多 查询要求要返回表中的所有的记录。数据库必须是Oracle的 代码尽量写的详细一些。分数的话不成问题的只要写的够好够详细的话分是不成问题的。

G. 谁能给我一个oracle存储过程的例子

你这个写成存储过程有什么用的? 检索了一些数据出来,你应该是要返回这些数据吧?应该要写个函数返回游标吧

-- 先创建一个自定义类型
create or replace package types as
type cur_type is ref cursor;
end;

-- 返回游标的函数
CREATE OR REPLACE FUNCTION f_test(
in_userId VARCHAR2 ,
in_userName VARCHAR2 )
RETURN types.cur_type
AS
v_cursor types.cur_type;
v_sql VARCHAR2(2000);
BEGIN
v_sql := 'select * from Users where 1 = 1';

IF in_userName IS NOT NULL THEN
v_sql := v_sql||'and UserName = '''||in_userName||'''';
END IF;

IF in_userId IS NOT NULL THEN
v_sql := v_sql||'and UserID = '''||in_userId||'''';
END IF;

OPEN v_cursor FOR
v_sql;

RETURN v_cursor;

END f_test;

H. oracle存储过程参数实例

可以调用 没问题的 只要当前用户可以访问这个table

I. 求两个oracle存储过程例子

create or replace procere proc_create is (固定语法定义存储过程名称)
begin
create table user_info (

userid number(5) primary key,

username varchar2(20),

password varchar2(20)

);--(建表完成,这个就不用解释了吧)

insert into user_info values('AA','123');
insert into user_info values('BB','123');
end proc_create;--(创建表的存储过程完成,注意格式即可,begin下面写正常的sql语句就ok了)

后面的那个你理解之后,自己先试试能不能写出来再说 尽量自己解决了撒。
另外还可以创建带参数的存储过程,多查查资料
不明白再问哈

热点内容
booljava 发布:2025-01-11 08:36:08 浏览:767
我的世界服务器必要弄的东西 发布:2025-01-11 08:32:56 浏览:424
postgre数据库 发布:2025-01-11 08:32:22 浏览:480
android登录源码 发布:2025-01-11 08:32:10 浏览:675
压缩机闭阀 发布:2025-01-11 08:27:19 浏览:671
dns服务器地址陕西 发布:2025-01-11 08:24:59 浏览:45
学思维编程 发布:2025-01-11 08:24:59 浏览:609
爱如生数据库 发布:2025-01-11 08:12:42 浏览:255
svm遗传算法 发布:2025-01-11 08:11:15 浏览:217
8岁讲编程 发布:2025-01-11 08:02:41 浏览:131