Stored procedures 经典ASP/OraOLEDB-如何定义包含参数的表?

Stored procedures 经典ASP/OraOLEDB-如何定义包含参数的表?,stored-procedures,asp-classic,oracle11g,oledb,oraoledb,Stored Procedures,Asp Classic,Oracle11g,Oledb,Oraoledb,从msdaora迁移到OraOLEDB的经典ASP脚本将不再执行以前使用的Oracle SP SP如下所示: 类型tbl_CONSOLIDATED_ID是由二进制_整数组成的VARCHAR2(32)索引表; tblSAM_DD_TEXT类型是VARCHAR2(50)索引表的二进制整数; 类型tblSAM_类型是由二进制_整数组成的数字索引表; -- 获取相关样本的过程( EMPID_在MAS_员工中。EMP_自动ID%类型, ID_OUT tbl_CONSOLIDATED_ID, SAMDDTE

从msdaora迁移到OraOLEDB的经典ASP脚本将不再执行以前使用的Oracle SP

SP如下所示:

类型tbl_CONSOLIDATED_ID是由二进制_整数组成的VARCHAR2(32)索引表;
tblSAM_DD_TEXT类型是VARCHAR2(50)索引表的二进制整数;
类型tblSAM_类型是由二进制_整数组成的数字索引表;
--
获取相关样本的过程(
EMPID_在MAS_员工中。EMP_自动ID%类型,
ID_OUT tbl_CONSOLIDATED_ID,
SAMDDTEXT_OUT tblSAM_DD_TEXT,
SAMTYPE_OUT tblSAM_类型
);
调用它的ASP如下所示:

Const cProcName=“{调用验证\支持。获取\关联的\样本(?,{resultset 100,ID \ OUT,SAMDDTEXT \ u OUT,SAMTYPE \ u OUT})”
设置MASconnLocal=Server.CreateObject(“ADODB.Connection”)
strcnolapath=ORAOLEDBCONNECTIONSTRING
MASconnLocal.Open(strCNLocalPath)
设置cmdStoredProc=Server.CreateObject(“ADODB.Command”)
设置cmdStoredProc.ActiveConnection=MASconnLocal
cmdStoredProc.CommandText=cProcName
cmdStoredProc.CommandType=1
设置参数mpid=cmdStoredProc.CreateParameter(“EMPID_IN”,adInteger,adParamInput)
参数mpid.Value=strEMPID
cmdStoredProc.Parameters.Append parametermpid
设置rs=cmdStoredProc.Execute
IIS日志中报告的错误为:

ORA-06550:_line_1_列_54:_PLS-00201:_identifier_'ID_OUT''必须声明_ORA-06550
怎么办

从目前为止的阅读中,我已经阅读了一些建议,建议我应该在ASP中,以与paramEMPID相同的方式为每个输出参数定义参数,如下所示:

dim参数输出
dim paramSamDDTextOut
模糊参数输出
set paramIDOut=cmdStoredProc.CreateParameter(“ID_OUT”)
设置paramSamDDTextOut=cmdStoredProc.CreateParameter(“SAMDDTEXT_OUT”)
设置paramSamTypeOut=cmdStoredProc.CreateParameter(“SAMTYPE_OUT”)
cmdStoredProc.Parameters.Append paramIDOut
cmdStoredProc.Parameters.Append ParamSamdTextOut
cmdStoredProc.Parameters.Append paramSamTypeOut
然而,执行“CreateParameter”需要的参数比我在这里展示的要多,并且我不知道当引用的SP参数是例如“VARCHAR2(50)表”时,哪些参数值是合适的


我很欣赏现在这样做的方式,即返回一个ref游标,但该应用程序很旧,而且时间不长,我更希望尽可能少地进行更改。

我对Oracle没有期望,但我非常确定您不能返回类似类型的
表,您必须使用游标类型-请参阅。@Lankymart感谢您的评论,但这在使用msdaora驱动程序时起作用。顺便说一句,您似乎对我的问题进行了编辑-您更改了什么?因此使用wiki格式,如果您单击我名字旁边的编辑链接,它将带您进入问题编辑历史记录。我使用markdown语法向代码块中添加了适当的语法高亮显示,仅此而已