J'ai créé un paquet de test contenant une seule fonction qui ne prend aucun paramètre d'entrée et renvoie un BOOLEAN. Le corps de la fonction consiste en une seule instruction RETURN TRUE
pour simplifier cette question.Comment puis-je appeler une fonction stockée Oracle renvoyant la valeur BOOLEAN?
Dans VB.Net, j'appelle avec succès la fonction, cependant, je reçois toujours une exception PLS-00382: expression is of wrong type
. Dans mon code vb, je crée un paramètre et définissez sa direction à ReturnValue
et DbType
à Int16
pour stocker le résultat booléen (puisqu'il n'y a pas de type booléen natif dans la structure DbType
). Cela n'a pas fonctionné, donc j'ai essayé Double
puis Decimal
puis Long
et Varchar2
mais ils ont tous provoqué la même exception.
Qu'est-ce que je fais mal ici?
spécifications du paquet
CREATE OR REPLACE PACKAGE TEST_PKG AS
FUNCTION GET_TEST_VAL RETURN BOOLEAN;
END TEST_PKG;
,
corps de boîtier
CREATE OR REPLACE PACKAGE BODY TEST_PKG AS
FUNCTION GET_TEST_VAL RETURN BOOLEAN IS
BEGIN
RETURN TRUE;
END GET_TEST_VAL;
END TEST_PKG;
,
code vb.net
Dim con As New OracleConnection("Data Source=test_db;user id=scott;password=123456")
Dim cmd As OracleCommand = con.CreateCommand()
cmd.CommandText = "TEST_PKG.GET_TEST_VAL"
Dim ret_val As New OracleParameter
ret_val.Direction = ParameterDirection.ReturnValue
ret_val.DbType = OracleDbType.Int16 '//<-- I tried varchar2, decimal, long, double'
cmd.Parameters.Add(ret_val)
cmd.CommandType = CommandType.StoredProcedure
cmd.ExecuteNonQuery() '//<-- This raises an Exception (PLS-00382: expression is of wrong type)'
Console.WriteLine("Return Value = " & ret_val.Value.ToString)
con.Close()
Et quel fournisseur de données utilisez-vous? –