① oracle 存储过程,写一个简单的Oracle存储过程
ORACLE提供的扩展sql功能的编程语言,语法不难,和一般的开发语言差不多,关键是写好需要带着SQL调优的思想去写。
② 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。
③ 怎么才oracle中查看存储过程
可用语句查看或用第三方工具查看。
一、语句查看方法:
1、执行语句:
SELECTtext
FROMuser_source
WHERENAME='ProcereName'
ORDERBYline;--其中ProcereName为存储过程名字,需要全部用大写英文。
2、如要查P_TEST的存储过程:
SELECTtext
FROMuser_source
WHERENAME='P_TEST'
ORDERBYline;
3、内容如下:
④ oracle存储过程 ||什么意思
在oracle里面 ||想当于连接的意思!~
两个字符型合并在一起!~
'a' || 'a' 结果就是'aa'
⑤ Oracle存储过程
你这个不能算是oracle的过程。
建议下载一份oracle的sql 参考手册官方文档放在手边,随时备查。或者随便找本oracle的教程看看都行。并不难。
我简单写个例子给你先:
oracle的过程:
create or replace 过程名 (参数1 in 类型,参数2 in 类型,......)
as
--变量定义,例如:
a number(12);
b varchar2(40);
--过程体开始:
begin
--变量赋值
a := 123;
--字符串拼接用“||”
b:='123';
b:= b||'abc'||'fasfdas';
--执行动态SQL
execute immediate ‘delete a_table where c=5';
end;
--过程体结束
⑥ oracle 存储过程中的 := 和=有什么区别
:= 是赋值符号,例如: a := 2, 那么变量a的值,就是2了
= 是比较符号, 例如: ... WHERE 字段名 = 2,和 > < 是一样的性质
⑦ 请问oracle怎么执行存储过程
我试验过了,就是exec 存储过程名或者execute 存储过程名(参数),请你在仔细确认一下,你的存储过程名写没写对呀,或者你没有进入sqlplus中?
----
以上,希望对你能有帮助。
⑧ ORACLE中怎么执行存储过程
执行带参数的存储过程
begin
存储过程名(参数1,参数2,参数3……);
end;
/
执行不带参数的存储过程
begin
存储过程名;
end;
/
⑨ 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单步调试