create or replace procedure pro_testa as
begin
insert into tabela(id,name) values(1,'OK');
commit; <-----提交
exception
when others then
rollback; <--------如果出错则回滚.
end
begin
insert into tabela(id,name) values(1,'OK');
commit; <-----提交
exception
when others then
rollback; <--------如果出错则回滚.
end
create or replace procedure pro_testa(p_out out varchar2) asbegin
insert into tabela(id,name) values(1,'OK');
commit;
p_out:='错误号码'||sqlcode||','||'错误信息:'||sqlerrm;
exception
when others then
rollback;
p_out:='错误号码'||sqlcode||','||'错误信息:'||sqlerrm;
end
2.此过程(带输出参数)如何调用?谢谢关注
(
V000 "TEST".TEST%TYPE,
V001 "TEST".ID%TYPE
) AS
--DECLARE @Err int
--BEGIN TRANSACTION
--请加入事务处理
BEGIN
INSERT INTO "TEST"
(
TEST,
ID
)
VALUES
(
V000,
V001
);
commit;
msg:='true';
exception
when others then
rollback;
msg:='V001 ';
END PR_TEST;
v_id number(8);
begin
select 序列的.nextval into v_id from dual;
insert into tabela(id,name) values(v_id,'OK');
commit;
p_id:v_id;
exception
when others then
rollback;
p_id:=-1;
end--返回id,错误返回-1.
--测试:SQL> set serverout on
SQL> variable dd number(8);
SQL> execute pro_testa(:dd);
SQL> select :dd from dual;
实在是太菜了楼上几位给的存储过程没有问题,编译可以正常通过但我是在SqlPlus Worksheet中调用存储过程的
例如我原来的调用如下:
Begin
PR_TEST('实施食盐','1234');
END;可是加上传出参数后该如何调用呢,总提示个数和类型不正确
SQL> variable dd number(10);
SQL> execute pro_testa(:dd);
SQL> select :dd from dual;