oracle存过怎么写 oracle存储过程历史记录

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:
【oracle存过怎么写 oracle存储过程历史记录】NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;
行5:
END关键词表明PL/SQL体的结束 。
oracle中的存储过程怎么写Oracle存储过程写法实例
总结项目中写oracle存过怎么写的存储过程例子oracle存过怎么写:
Oracle存储过程基本语法 存储过程
1CREATE OR REPLACE PROCEDURE 存储过程名
2IS/AS
3BEGIN
4NULL;
5EXCEIPTION;
6END;
1、创建存储过程oracle存过怎么写,后面可用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_ZL0) 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_ID1;
DBMS_OUTPUT.put_line(TEM_INSTANCE.TEMPLET_CONTENT);
END LOOP;
END IF;
COMMIT;
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;
注:关于游标oracle存过怎么写的使用,如果像本例中使用for循环去遍历游标oracle存过怎么写的话则不需要显式的去用open/close
cursor打开和关闭游标,此处会自己处理 , 如果使用fetch
into的话就需要显式开关游标,另外任意执行一个update操作,用隐式游标sql的属性%found,%notfound,%rowcount,%isopen观察update语句的执行情况 , 也可以使用来判断游标状态,如IF
TEMPLATE_CUR%ISOPEN THEN 。
oracle存储过程怎么写?---创建
create or replace procedure GenTestUserData(nRecordCount in number Default 50000) is
nCurrentCount number;-- 当前表中记录
nMaxLogIDnumber;
nInsertCountnumber;
begin
select Count(LogID), Nvl(Max(LogID), 0)
into nCurrentCount, nMaxLogID
from MyUser;
nInsertCount:= nRecordCount - nCurrentCount;
if nInsertCount = 0 then
Return;
end if;
-- 插入数据
insert into MyUser(FirstName, LastName, LogID, Mail, Location)
select FirstName, LastName, LogID, 'MyUser@' || To_Char(LogID) || '.Com', '.' || To_Char(LogID) || '.Com'
from (select GetRandomHZ FirstName, GetRandomHZ LastName, nMaxLogIDRownum LogID
from All_Tab_Columns
where Rownum = nInsertCount) TestData;
end;
/
--删掉
drop procedure GenTestUserData;
oracle的存储过程怎么写?create or replace function pagesize(p_sql varchar2,pno number,pnosize number,pcount out number)
return sys_refcursor
as
v_sql varchar(2000);
ccount number;
tmpsql varchar2(2000);
cur_data sys_refcursor;
begin
v_sql:='select count(*) from ('||p_sql||') t';
tmpsql:='select * from (select rownum rowa,d.* from ('||p_sql||') d where rownum='||pno*pnosize||') where rowa'||(pno-1)*pnosize;
execute immediate v_sql into ccount;
pcount:=ceil(ccount/pnosize);
open cur_data for tmpsql;
return cur_data;
end;
这是一个分页的存储过程
oracle存过怎么写的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于oracle存储过程历史记录、oracle存过怎么写的信息别忘了在本站进行查找喔 。

    推荐阅读