+ -
当前位置:首页 → 问答吧 → ASP调用一个输入值为varchar2,输出值为游标的存储过程,各种报错

ASP调用一个输入值为varchar2,输出值为游标的存储过程,各种报错

时间:2011-11-09

来源:互联网

存储过程代码如下:
CREATE OR REPLACE PROCEDURE test_callprc_with_parm(CPDL in varchar2,r_result out sys_refcursor) as

  v_cpdl varchar2(100);

Begin
  v_cpdl := CPDL;
  
  begin
  Execute immediate 'drop table call_suc';
  exception when others then
  DBMS_OUTPUT.PUT_LINE('does not exist');
  end;

  begin
  Execute immediate ' create table call_suc as select * from test_excel2oracle; ';
  exception when others then
  DBMS_OUTPUT.PUT_LINE('does not exist');
  end;  
   
   
  BEGIN
  open r_result for select * from test_excel2oracle where cpdl = v_cpdl and rownum = 1;
  END;

END test_callprc_with_parm;


ASP代码如下
VBScript code

<!--#include file="adovbs.inc"-->
<html>
<body>
<%
set conn = Server.CreateObject("adodb.connection") 
set cmd = Server.CreateObject("adodb.command")
conn.Open "xander","xanderbi","hupeng1"
cmd.ActiveConnection = conn   
cmd.CommandText = "test_callprc_with_parm"
cmd.CommandType = adCmdStoredProc
set para1 = cmd.CreateParameter("cpdl",adVarChar,adParamInput)
cmd.Parameters.Append para1
set para2 = cmd.CreateParameter("r_result",adUserDefined,adParamOutput)
cmd.Parameters.Append para2
set rs = cmd.execute
cmd.close
conn.close
%>    
</body>
</html>



目前报错:
ADODB.Parameters 错误 '800a0e7c'

不正常地定义参数对象。提供了不一致或不完整的信息。

/test_cursor.asp,行 12

作者: qq253040425   发布时间: 2011-11-09

set objCmd=Server.CreateObject( "Adodb.Command ") 
objCmd.ActiveConnection=conn 
objCmd.CommandText= "sp_all_test " '指定存储过程名称 
objCmd.CommandType=4  
objCmd.Prepared = true '要求将SQL命令先行编译 
'-----准备stored procedure 的参数------- 

objCmd.Parameters.Append objCmd.CreateParameter( "@id ",3,1,4,id) 
objCmd.Parameters.Append objCmd.CreateParameter( "@name ",200,1,50,name) 
objCmd( "@id ")= "1 " 
objCmd( "@name ")= "ttj " 

'objCmd.Parameters.Append _ 
'objCmd.CreateParameter( "p_tot ",adBigInt,adParamOutput,,0) 
'-----执行存储过程---------------------- 
set rs=objCmd.Execute() 

'asp中,adParamInput,adCmdStoredProc 等常量没有初始值,如果要引用,就要提前定义, 


常用的类型代码: 

adBigInt: 20 ; 
adBinary : 128 ;  
adBoolean: 11 ; 
adChar: 129 ; 
adDBTimeStamp: 135 ; 
adEmpty: 0 ; 
adInteger: 3 ; 
adSmallInt: 2 ;  
adTinyInt: 16 ; 
adVarChar: 200 ;

作者: hefeng_aspnet   发布时间: 2011-11-10