1
我有一个Oracle存储过程,看起来像:VB.NET示数
PROCEDURE GET_PART_CHARACTERISTICS (v_catalog_nos_ IN CatalogNos,
Parts_Char_Cursor out sys_refcursor) AS
BEGIN
OPEN Parts_Char_Cursor FOR
SELECT catalog_no, characteristic_code, unit_meas, attr_value
FROM IFSAPP.SALES_PART_CHARACTERISTIC
WHERE CATALOG_NO IN (select * from table(v_catalog_nos_));
END GET_PART_CHARACTERISTICS;
这通过VB.NET,然后调用使用:
Dim cmd As New Oracle.DataAccess.Client.OracleCommand()
cmd.Connection = conn
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "dci_sales_group_part_api.get_part_characteristics"
Dim CatalogNosParam As New Oracle.DataAccess.Client.OracleParameter()
CatalogNosParam.ParameterName = "v_catalog_nos_"
CatalogNosParam.Direction = ParameterDirection.Input
CatalogNosParam.OracleDbType = Oracle.DataAccess.Client.OracleDbType.Varchar2
CatalogNosParam.Size = 100
Dim CatalogNoArr(0) As String
CatalogNoArr(0) = .Item("catalog_no")
CatalogNosParam.Value = CatalogNoArr
CatalogNosParam.CollectionType = Oracle.DataAccess.Client.OracleCollectionType.PLSQLAssociativeArray
cmd.Parameters.Add(CatalogNosParam)
Dim partscharParam As New Oracle.DataAccess.Client.OracleParameter()
partscharParam.ParameterName = "Parts_Char_Cursor"
partscharParam.Direction = ParameterDirection.Output
partscharParam.OracleDbType = Oracle.DataAccess.Client.OracleDbType.RefCursor
cmd.Parameters.Add(partscharParam)
Dim da As New Oracle.DataAccess.Client.OracleDataAdapter(cmd)
da.Fill(dsPartCharacteristics, "PartCharacteristics")
我得到一个错误,指出:“ORA-06550:第1行,第7列: PLS-00306:调用'GET_PART_CHARACTERISTICS'时参数的错误数量或类型 ORA-06550:第1行,第7列: PL/SQL: Statem
`create or replace TYPE CATALOGNOS AS TABLE OF VARCHAR2(100);`
我不知道为什么,这是行不通的:ENT忽略“
为CatalogNos类型声明。