你首先应该明白存储过程中的参数有三种类型in,out,in out其中out可以向主程序传递参数值你在主程序中想要用什么值,就把什么变量声明为out型,另外,关键字as后面是声明内部变量的!!
selcet语句要和into连用
例子
CREATE PROCEDURE pBuildExam(p_recid out number)AS
begin
select Recid.currval into p_recid from kaoshi_master;
commit;
exception
when others then
rollback;
end;这样p_recid在主程序中就可以用了!!
selcet语句要和into连用
例子
CREATE PROCEDURE pBuildExam(p_recid out number)AS
begin
select Recid.currval into p_recid from kaoshi_master;
commit;
exception
when others then
rollback;
end;这样p_recid在主程序中就可以用了!!
解决方案 »
- 关于ORACLE 游标和数组使用
- Oracle 10G启动报错,启问能否提供解决方案?
- linux 安装oracle 10G 权限不足
- 在oracle的存储过程中如何调用sqlldr
- PL\SQL和SQL有什么区别和联系?
- select func(para1) from dual 出错?
- cpu增加了,需要修改init.ora文件的cpu_count参数?
- 如何编写ORACLE返回记录的存储过程
- 存储过程如何返回结果集的问题,答对的,100分全给你,在线等待
- ORA-01002: 读取违反顺序,是什么错误,应该怎样解决!
- 请问如何获得表的字段名?
- 简单的问题,如何用sql语句使满足某个条件的先显示??
SQL/PLUS下?其他過程或函數中?開發語言(如DELPHI)的界面上顯示?或其他?
CREATE PROCEDURE pBuildExam(pDlm Varchar2,pDlm Varchar2,p_Sjid number,p_RenID number,p_recid OUT NUMBER)
AS
beginINSERT INTO kaoshi_master(recid,renid,sjid,dlm,xm,kksj) VALUES(recid.nextval,Renid,Sjid,pDlm,pXm,sysdate);
commit;
select Recid.currval Recid from kaoshi_master;
p_recid:=Recid; --要返回的数据,我想将这个参数返回回去。
exception
when others then
rollback;
end;以DELPHI6+ORACLE8I為例子:
DELPHI6使用BDE連接ORACLE8I:
SP_TEST:對應存儲過程控件名稱,
.....
VAR OUT_VIEW:STRING;
BEGIN
....
OUT_VIEW:=SP_TEST.PAPAMBYNAME(p_recid).ASFLOAT;
....
END;
dbms_output.put_line(to_char(p_recid));然后在SQL下执行 set serveroutput onSQL> EXECUTE pBuildExam('参数1','参数2','参数3',数字参数);就会看到SQL有显示结果。或者可以用tst脚本来调试
declare
p_recid NUMBER;
begin
pBuildExam('a','b',1,2,p_recid);
end;这样就可以了
call pBuildExam('a','b',1,2,p_recid);
这句应当怎么写?
怎么写啊~!
我在asp中调用。
sqlstr="call pBuildExam('a','b',1,2,p_recid)
set rs=conn.execute(sqlstr)
AS
begin
INSERT INTO kaoshi_master(recid,renid,sjid,dlm,xm,kksj) VALUES(recid.nextval,p_Renid,p_Sjid,pDlm,pXm,sysdate);
commit;
select Recid.currval into p_out from kaoshi_master;
--p_recid:=Recid; --要返回的数据,我想将这个参数返回回去。
return;
exception
when others then
rollback;
p_out:=0 ; --如果出错则返回0
end;执行完成了你就可以得到 p_out的值,比如:
select :p_out from dual;