我无法使用IDBcommand从VB调用函数,该函数返回一个整数值
param1 = dbfactory.CreateParameter("param1", DbType.AnsiString)
param1.Value = sIban
param1.Direction = ParameterDirection.Input
param1.Size = 1000
param2 = dbfactory.CreateParameter("param2", DbType.AnsiString)
param2.Value = sNid
param2.Direction = ParameterDirection.InputOutput
param2.Size = 1000
param3 = ´dbfactory.CreateParameter("param3", DbType.AnsiString)
param3.Value = sKto
param3.Direction = ParameterDirection.InputOutput
param3.Size = 1000
ret_value = dbfactory.CreateParameter(Nothing, DbType.Int16)
ret_value.Size = 1000
ret_value.Direction = ParameterDirection.ReturnValue
cmd.CommandText = "Func1"
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add(param1)
cmd.Parameters.Add(param2)
cmd.Parameters.Add(param3)
cmd.Parameters.Add(ret_value)
cmd.Connection = conn
cmd.ExecuteNonQuery()
我的函数标题如下所示:
CREATE OR REPLACE FUNCTION Func1( param1 VARCHAR(50), param2 VARCHAR(50), param 3 VARCHAR(50))RETURNS INTEGER
我得到一个例外,没有找到任何程序。
有人有任何想法吗?我一直在寻找一段时间。
由于
答案 0 :(得分:0)
你创建了一个带有3个参数的函数,但是用4个参数调用一个存储过程 - 难怪它失败了,因为它们是不同的对象而你以不同的方式调用它们。
我对.Net的东西不太熟悉,但一般来说你应该在查询的上下文中调用UDF:
select Func1(?, ?, ?) from sysibm.sysdummy1
或VALUES
声明
values Func1(?, ?, ?)
在这两种情况下,您都会得到一个结果集,您可以从中获取函数返回的值。查看code samples in the manual。