Прежде всего, я из Аргентины, извините за плохой английский!Вызов функции Oracle с параметрами с VB.NET
Я работаю в visual.net 2010, и я пытаюсь сделать вызов функции в пакете Oracle, но я получаю эту ошибку:
PLS-00306: неправильный номер или типов аргументов в вызове 'FN_FINDPRONOSTICO'
Это определение пакета:
create or replace
PACKAGE PKG_HOME AS
TYPE CR_ESTACIONREFERENCIA IS REF CURSOR;
TYPE CR_PRONOSTICO IS REF CURSOR;
TYPE CR_ALERTA IS REF CURSOR;
TYPE CR_ESTADIOSPREDOMINANTESZONA IS REF CURSOR;
TYPE CR_VARIEDADES IS REF CURSOR;
--FUNCTIONS
FUNCTION FN_FINDESTACIONREFERENCIA(PR_IDZONAFENO IN NUMERIC) RETURN CR_ESTACIONREFERENCIA;
FUNCTION FN_FINDPRONOSTICO(PR_IDESTACION IN NUMERIC) RETURN CR_PRONOSTICO;
FUNCTION FN_FINDALERTAMETEO(PR_IDESTACION IN NUMERIC) RETURN CR_ALERTA;
FUNCTION FN_FINDALERTAPLAGA(PR_IDZONAFENO IN NUMERIC) RETURN CR_ALERTA;
FUNCTION FN_FINDALERTAENFERMEDAD(PR_IDZONAFENO IN NUMERIC) RETURN CR_ALERTA;
PROCEDURE SP_ESTFENOPREDZONAVAR(pFechaDesde IN DATE, pFechaHasta IN DATE,pIdZona IN NUMBER ,pIdVariedad IN NUMBER);
FUNCTION FN_ESTADIOSFENOPREDZONA(pIdZona IN NUMBER) RETURN CR_ESTADIOSPREDOMINANTESZONA;
END;
И это код в VB.NET
Dim cmd As New OracleCommand("FRUTIC.PKG_HOME.FN_FINDPRONOSTICO", OraConn)
cmd.CommandType = CommandType.StoredProcedure
cmd.BindByName = True
Dim oparam0 As OracleParameter = cmd.Parameters.Add("PR_IDESTACION", OracleDbType.Int64)
oparam0.Value = 65
oparam0.Direction = ParameterDirection.Input
Dim oparam1 As OracleParameter = cmd.Parameters.Add("CR_PRONOSTICO", OracleDbType.RefCursor)
oparam1.Direction = ParameterDirection.Output
Dim reader As OracleDataReader
reader = cmd.ExecuteReader()
Do While reader.Read()
Dim obj As Object
obj = reader.GetValue(0)
Loop
Если я запустил этот оператор SQL (SELECT FRUTIC.PKG_HOME.FN_FINDPRONOSTICO (65) FROM DUAL) в Oracle SQL Developer, он вернет результаты правильно.
Где может быть проблема?
спасибо, что заблаговременно! Привет из Аргентины, Лукас
Вы стреляете первым :) – Caveman
Это именно то, что я искал, он отлично работал! Большое спасибо! –