在SQL/PLUS中调用存储过程,显示结果:
SQL>set serveoutput on
SQL>var info1 number; --输出1
SQL>var info2 number; --输出2
SQL>declare
var1 varchar2(20); --输入1
var2 varchar2(20); --输入2
var3 varchar2(20); --输入2
BEGIN
pro(var1,var2,var3,:info1,:info2);
END;
/
SQL>print info1;
SQL>print info2;
SQL>set serveoutput on
SQL>var info1 number; --输出1
SQL>var info2 number; --输出2
SQL>declare
var1 varchar2(20); --输入1
var2 varchar2(20); --输入2
var3 varchar2(20); --输入2
BEGIN
pro(var1,var2,var3,:info1,:info2);
END;
/
SQL>print info1;
SQL>print info2;
ProcPLYS.close;
ProcPLYS.Params[0].AsString :=ysn+ysy ;
ProcPLYS.Params[1].AsString :=ysns+ysys ;
ProcPLYS.ExecProc ;
proc组件,编程不方便!必须是query或是三层结构所用的ClientDataSet1.commandtext:='sql';
sql为拼写的字符串格式!
sql>declare
sql> str varchar2(20);
sql>begin
str := pkg_test.get('aa',ff) ;
sql>end;
以及在delphi的调用!!
用这个StoredProc控件调用。
str := pkg_test.get('aa',ff) ;
*
ERROR 位于第 4 行:
ORA-06550: 第 4 行, 第 32 列:
PLS-00201: 必须说明标识符 'FF'
ORA-06550: 第 4 行, 第 7 列:
PL/SQL: Statement ignoredFF应该定义为什么类型?如何写定义语句?
在DELPHI中我不用proc组件,编程不方便!必须是query或是三层结构所用的ClientDataSet1.commandtext:='sql';
sql为拼写的字符串格式!
EXEC 存储过程名(参数)
就可以了
---------- --------
1 猪八戒
2 孙悟空
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
END pkg_test;
/ create or replace PROCEDURE get(p_rc OUT pkg_test.myrctype)
IS
sqlstr VARCHAR2 (50);
BEGIN
sqlstr:='select * from aa';
OPEN p_rc FOR sqlstr;
END get;
/ 在delphi中:
在窗体上放一个ADOStoredproc
设置 procedurename=get
prepared = true
active = true
还有 connectstring
代码如下,好运! procedure TForm1.Button1Click(Sender: TObject);
begin
adostoredproc1.close;
adostoredproc1.open;
label1.caption:= ADOStoredProc1.fields[1].asstring;
while not adostoredproc1.eof do
begin
label2.caption:= ADOStoredProc1.fields[1].asstring;
adostoredproc1.Next;
end;
end;
query或是三层结构所用的ClientDataSet1.commandtext:='sql';
sql为拼写的字符串格式!
那位高手知道????????
adoquery1.sql.clear;
adoquery1.sql.add('select * from get()');
adoquery1.open;