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体的结束。
列个表,里边我一样给你写个例子,你看着学学,我尽量给你做出注释--建一个学生表
create table student (id int,name varchar2(10))
--插入两条测试数据
insert into student values (1,'张三')
insert into student values (2,'李四')
commit
-------------用存储过程添加id为3,姓名为王五的学生-----------
create or replace PROCEDURE P_INSERT
v_name varchar2--定义姓名变量)
is
begin
insert into student values (v_id,v_name)--执行插入 *** 作
commit
end
执行的时候用下边的
BEGIN
p_insert(3,'王五')
END
然后select * from student
你会发现多了3 王五 这条数据
---------------用存储过程删除id为3的学生------------
create or replace PROCEDURE P_DELETE
(v_id int)--定义变量id
is
begin
delete from student where id=v_id--执行删除 *** 作
commit
end
执行
BEGIN
p_delete(3)
END
执行完上边后执行
select * from student
你会发现id为3的学生没了
---------------用存储过程查询id为2的学生姓名------------
create or replace PROCEDURE P_SELECT
(v_id int)--定义输入变量id
is
v_name varchar2(10)--定义输出变量name
begin
select name into v_name from student where id=v_id--执行查询
dbms_output.put_line('学生姓名为:'||v_name)--输出结果
end
执行
BEGIN
p_select(2)
END
输出的结果就是id为2的学生姓名
-----------用存储过程查询id为1的学生姓名修改为赵六----------
create or replace PROCEDURE P_UPDATE
(v_id int,--定义要修改的id
v_name varchar2)--定义要修改后的名字
is
begin
update student set name=v_name where id=v_id--执行修改 *** 作
commit
end
执行
BEGIN
P_UPDATE(1,'赵六')
END
然后你再
select * from student
你会发现id为1的已经为赵六了
上边这些都是最简单的存储过程,在实际过程中肯定没这么简单
还有,我让你执行的
BEGIN
P_UPDATE(1,'赵六')
END
这种东西可以当做oracle的job调用,可以定时执行
再有不懂的你再问吧,上边的仅做参考
累死我了,哈哈
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单步调试
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)