--存储过程,变量名不区分大小写
--1.创建存储过程
--固定格式:CREATE OR REPLACE PROCEDURE 存储过程名字 (变量名 in 类型) as
CREATE OR REPLACE PROCEDURE "My_Demo" (class in varchar2)
as
--2.声明变量
var_name VARCHAR2(100); --声明普通变量
var_subject VARCHAR2(100);
var_postid NUMBER(10);
var_card_id NUMBER(10);
card_id sys_refcursor; --声明oracle 自定义游标
FILE_HANDLE UTL_FILE.FILE_TYPE; --声明文件句柄
--3.主要逻辑
--固定格式以Begin开始,end结束;
Begin
.
.
.
.
.
.
end;
--4.输出文本字符串
dbms_output.put_line('===START===');
--5.给变量赋值
var_name := ''; --在这边 := 等价于 =
--6.字符串连接使用 ||
var_name||'_0001.unl' --变量连接字符串
--7.往文件中写东西
--7.1 打开文件句柄,第一个参数必须为大写,第二个参数是文件名称,第三个参数随便
FILE_HANDLE := UTL_FILE.FOPEN('MYFILE',
var_name||'_0001.unl',
'w');
UTL_FILE.FCLOSE(FILE_HANDLE);
--7.2 写内容到文件
utl_file.put_line(FILE_HANDLE,
var_name|| '|' || var_subject || '|' ||);
--8.打开游标,将数据存储到游标中,最后关闭游标
open card_id for 'select card_id from student';
.
.
.
.
close card_id;
--9.循环遍历游标
loop
fetch card_id
into var_card_id;
exit when card_id%NOTFOUND;
end loop;
--10.if语句的使用
if card_id > 0 then
select name,subject
INTO var_name, var_subject
FROM student;
else
var_name := '';
var_subject := '';
end if;
--11.抛异常,表示除声明意外的错误
exception
when others then
--12.带返回值的
CREATE OR REPLACE PROCEDURE "My_Demo" (class in varchar2)
return varchar2 is
声明变量
var_temp varchar(100);
begin
.
.
.
.
.
.
return(var_temp);