У меня есть определенная ниже функция:
FUNCTION foo (
param1 IN VARCHAR2(20)
, param2 IN VARCHAR2(255)
, param3 IN VARCHAR2(3)
, param4 IN VARCHAR2(4)
, param5 OUT VARCHAR2(1000)
)
RETURN INTEGER IS
BEGIN
--Function Code Here
END foo;
, которую я хочу вызвать в своей форме, я предпринял следующую попытку ниже:
Dim conn As New Oracle.DataAccess.Client.OracleConnection()
conn.ConnectionString = DBOraConnectString
Dim cmd As New OracleCommand
Dim param As OracleParameter
cmd.Connection = conn
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "foo"
param = New Oracle.DataAccess.Client.OracleParameter
param.ParameterName = "param1"
param.DbType = DbType.AnsiString
param.Value = val1
param.Size = 20
param.Direction = ParameterDirection.Input
cmd.Parameters.Add(param)
param = New Oracle.DataAccess.Client.OracleParameter
param.ParameterName = "param2"
param.DbType = DbType.AnsiString
param.Value = val2
param.Size = 255
param.Direction = ParameterDirection.Input
cmd.Parameters.Add(param)
param = New Oracle.DataAccess.Client.OracleParameter
param.ParameterName = "param3"
param.DbType = DbType.AnsiString
param.Value = val3
param.Size = 3
param.Direction = ParameterDirection.Input
cmd.Parameters.Add(param)
param = New Oracle.DataAccess.Client.OracleParameter
param.ParameterName = "param4"
param.DbType = DbType.AnsiString
param.Value = val4
param.Size = 4
param.Direction = ParameterDirection.Input
cmd.Parameters.Add(param)
param = New Oracle.DataAccess.Client.OracleParameter
param.ParameterName = "param5"
param.DbType = DbType.AnsiString
param.Size = 1000
param.Direction = ParameterDirection.Output
cmd.Parameters.Add(param)
conn.Open()
Try
cmd.ExecuteNonQuery()
Dim vStr As String
vStr = cmd.Parameters.Item("outVal").Value.ToString
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
conn.Close()
Выполнение этого приводит кследующая ошибка:
ORA-06550: line 1 column 7:
PLS-00221: 'FOO' is not a procedure or is undefined
ORA-06550: line 1 column 7:
PL/SQL: Statement ignored
Я не понимаю, почему это происходит.Мое соединение со схемой правильное, а моя функция компилируется и правильно определена, так почему бы ее не выполнить?