CREATE OR REPLACE PACKAGE pkg_ls
as
type c_type is ref cursor;
procedure p_ls(p_id number,p_rc OUT c_type);
End;
CREATE OR REPLACE PACKAGE BODY pkg_ls
as
procedure p_ls(p_id number,p_rc OUT c_type)
is
begin
if p_id = 1 then
open p_rc for select * from student;
end if;
end ;
end;如何在SQLPLUS 和 delphi 的 ClientDataSet1.CommandText :='???’
中调用?
as
type c_type is ref cursor;
procedure p_ls(p_id number,p_rc OUT c_type);
End;
CREATE OR REPLACE PACKAGE BODY pkg_ls
as
procedure p_ls(p_id number,p_rc OUT c_type)
is
begin
if p_id = 1 then
open p_rc for select * from student;
end if;
end ;
end;如何在SQLPLUS 和 delphi 的 ClientDataSet1.CommandText :='???’
中调用?
解决方案 »
- 基础知识请教
- SQL*net more data to client等待事件导致ora-03113错误
- Oracle创建存储过程的问题
- 数据库视图查询去重复
- oracle数据文件的一个问题
- 各位'大虾'们救命啊!小弟要因此失业了.请好心人帮忙来看看吧!急......救急如救命,谢谢啦!
- 关于触发器的权限问题
- 求助一个查询语句
- 请问:在用户自定义函数中能否返回多记录结果(或数据集)?如何返回记录结果?如何使用返回的记录?谢谢!
- 求教,在oracle9i中,如何创建一个新的实例啊?(搜索过以前的,没有)在线等。。。
- 如何对嵌套表生成视图?
- 请教:ORACLE9I数据表中不显示中文,而变成问号,什么原因????
(
id NUMBER,
name VARCHAR2(30),
sex VARCHAR2(10),
address VARCHAR2(100),
postcode VARCHAR2(10),
birthday DATE,
photo LONG RAW
);
/
在sql plus:
declare
w_rc pkg_test.myrctype; --定义ref cursor型变量
--定义临时变量,用于显示结果
w_id student.id%type;
w_name student.name%type;
w_sex student.sex%type;
w_address student.address%type;
w_postcode student.postcode%type;
w_birthday student.birthday%type;
begin
pkg_test.get(1,w_rc);
--fetch结果并显示
loop
fetch w_rc into w_id,w_name,w_sex,w_address,w_postcode,w_birthday;
exit when w_rc%notfound;
dbms_output.put_line(w_name);
end loop;
end;
/在delphi:
SQL> select * from aa; ID NAME
---------- --------
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;
/ 在窗体上放一个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;
然後 execute pkg_ls.p_ls(p_id number,:c);即可現在我有一個問題,如何使用Oracle Managerment Service ,包括安裝到使用,因為我想做數據庫備份,兄弟啊,你得幫助我啊,還有,如果哪里有資料的話,你可以介紹一下.
多謝
我的email
[email protected]
参数错误!我试验过的不灵
我需要使用三次结构!不用ADOStoredProc1组件!
必须使用delphi 的 ClientDataSet1.CommandText :='???’
如何连接呢?
CREATE OR REPLACE PACKAGE ZHT_TESTAS TYPE crTmp IS REF CURSOR ;
TYPE m is TABLE of varchar2(21)
INDEX BY BINARY_INTEGER;
PROCEDURE ff(mm out m);
procedure gg(crtemp out crTmp) ;
end;
/
CREATE OR REPLACE PACKAGE BODY "ZHT_TEST"as
procedure ff(mm out m)
AS
kk3 varchar(13);
crtemp crTmp;
--a1 varchar2(20);
a2 varchar2(20);
a1 varchar2(20);
percount NUMBER DEFAULT 1; BEGIN open crtemp for select dcusername,dcusermobile from xrmbat016 ;
Loop
fetch crtemp into a2,a1;
EXIT WHEN crtemp%NOTFOUND;
mm(percount):=a1;
percount := percount + 1;
end loop;
--a1:='zhang';
-- a2:='hait';
END;
procedure gg(crtemp out crTmp)
as
--crtemp crTmp;
a1 varchar2(20);
a2 varchar2(20);
BEGIN open crtemp for select dcuserName,dcusermobile from xrmbat016 ;
end;
END;
/中间层:
ADOCn1->ConnectionString="Provider=MSDAORA.1;Password=xrmbauser;User ID=xrmbauser;Data Source=jennydb;Persist Security Info=True";
provider用微软的,别用oracle的
客户端:CData->Close();
CData->CommandText="{call zht_test.gg({resultset 0,crTemp})}";
CData->Open();