declare
v_rc tinger01.myrctype;
v_name varchar2(100);
begin
tinger01.selectbudgettitle('myid',v_rc); --execute procedure
-- then get recordset
fetch v_rc into v_name;
loop
exit when v_rc.notfound;
dbms_output.put_line(v_name);
fetch v_rc into v_name;
end loop;
end;
v_rc tinger01.myrctype;
v_name varchar2(100);
begin
tinger01.selectbudgettitle('myid',v_rc); --execute procedure
-- then get recordset
fetch v_rc into v_name;
loop
exit when v_rc.notfound;
dbms_output.put_line(v_name);
fetch v_rc into v_name;
end loop;
end;
这是大致代码,自己去修改一下,应当就可以
<%
dim cn,cmd,cmdrc
set cn = server.CreateObject("adodb.connection")
cn.open STRDSN
set cmd=server.CreateObject("adodb.command")
set cmdrc=server.CreateObject("adodb.recordset")
cmd.ActiveConnection = cn
cmd.CommandType = adCmdText
cmd.CommandText = "{call tinger01.selectbudgettitle(?,{resultset 0, myrctype})}"
cmd.Parameters.Append cmd.CreateParameter("p_depart_id",adInteger,adParamInput,10,1 )
Set cmdrc.Source = cmdR
或
set cmdrc= cmdR.Execute '这是另一种执行方式
cmdrc.Open
%>
这一名出错
type myrctype is ref cursor;
procedure selectbudgettitle(p_depart_id in d_budget.depart_id%type,
myrc out myrctype);
end tinger01;create or replace package body tinger01 as
procedure selectbudgettitle(p_depart_id in d_budget.DEPART_ID%type,
myrc out myrctype) is
begin
open myrc for
select substr(session_end,1,4)||'ÄêµÚ'||
decode(substr(session_end,6,2),'12','ËÄ','09','Èý','06','¶þ','Ò»')
||'¼¾¶È' as name from
(select distinct session_end from d_budget where depart_id=p_depart_id
order by session_end desc )
order by session_end desc;
end selectbudgettitle;
end tinger01;
ÔÚSQL/PLUSÖÐÔËÐС£
set serveroutput on
declare
p_rc tinger01.myrctype;
str varchar2(20);
begin
tinger01.selectbudgettitle(1,p_rc);
loop
fetch p_rc into str;
dbms_output.put_line(str);
exit when p_rc%notfound;
end loop;
end;
/
还没有执行呢,仅仅是一个简单的等于也出错,没有弄错吧
如果有错,也该在真正执行那里啊
cmd.CommandText = "{call tinger01.selectbudgettitle(?,{resultset 0, myrctype})}"
这一行不出错了,但是cmd.execute出错了。
返回的结果都是正确的。就是在ASP中写的不行了。总是没有成功,急死我了。~~~~~~~~~~~``KingSunSha(弱水三千)
介绍的网址我也看了,但是还是出错。我用 dim cn,cmd,cmdrc
set cn = server.CreateObject("adodb.connection")
cn.open STRDSN
set cmd=server.CreateObject("adodb.command")
set cmdrc=server.CreateObject("adodb.recordset")
cmd.ActiveConnection = cn
cmd.CommandType = 1
cmd.CommandText = "{call tinger01.selectbudgettitle(?,{resultset 0, myrctype})}"
cmd.Parameters.Append cmd.CreateParameter("p_depart_id",adInteger,adParamInput,10,1 )
set cmdrc= cmdR.Execute 出错。
用
set cmd=server.CreateObject("adodb.command")
set cmdrc=server.CreateObject("adodb.recordset")
cmd.ActiveConnection = session("adoconn")
cmd.CommandType = 4
set cmdpara=cmd.CreateParameter("p_depart_id",adInteger,adParamInput,10,1 )
'set cmdpara=cmd.CreateParameter("p_depart_id",adInteger,adParamInput,10,1 )
'cmd.parameters.append cmdpara
cmd.parameters.append cmdpara cmd.CommandText = "tinger01.selectbudgettitle"
cmd.parameters("p_depart_id")=1
cmdrc=cmd.Execute
也是出错。都是在cmdrc=cmd.Execute这一行出错。
现在没有环境,如果有环境,我可以帮你测试一下,唉.
http://expert.csdn.net/Expert/topic/1182/1182914.xml?temp=.179516
under SQL PLUS>
===============================================================
--create table
CREATE TABLE T_HEAD
( HEAD_NO VARCHAR2(10));
--create package
CREATE OR REPLACE package pkg_typ is
type TypCur is ref cursor;
procedure pro_test(p_id number, p_cur out TypCur);
end;
/
--create package body
CREATE OR REPLACE package body pkg_typ is
procedure pro_test(p_id number, p_cur out TypCur)
is
begin
open p_cur for select head_no from t_head;
end;
end;
/under VB(ADO2.5)
===============================================================
Option Explicit
Private Sub Command1_Click()
Dim conn As ADODB.Connection
Dim cmd As ADODB.Command
Dim rs As ADODB.Recordset
Set conn = New ADODB.Connection
conn.CursorLocation = adUseClient
conn.Open "Provider=MSDAORA.1;" & _
"Password=qsun;User ID=qsun;" & _
"Data Source=manu;"
Set cmd = New ADODB.Command
cmd.ActiveConnection = conn
cmd.CommandType = adCmdText
cmd.CommandText = "{call pkg_typ.pro_test(?,{resultset 0, p_cur})}"
cmd.Parameters.Append cmd.CreateParameter("p_id", adNumeric, adParamInput, 10, 1)
Set rs = cmd.Execute
Do Until rs.EOF
Debug.Print rs.Fields(0)
rs.MoveNext
Loop
rs.Close
conn.Close
End Sub结果没有问题.你检查一下是否是ADO版本的问题.