我需要通过vb.net在oracle或sql中执行存储函数。
我创建了一个命令对象。根据数据库类型(oracle或SQL),我正在准备
命令文本为select函数名称(?,?,?,?,?,?,?,?); (对于Oracle) 添加函数的参数值
现在执行无法执行无效参数的ExecuteScalar。
这适用于ODBC连接字符串。但ODBC不支持64位。
我的要求:代码应该通过在运行时获取值来执行用户定义的存储过程。
由于 Rupesh
答案 0 :(得分:1)
您的命令文本应该只是没有选择的存储过程名称,并确保将命令类型设置为存储过程。请查看此链接,例如:
http://support.microsoft.com/kb/321718
甲骨文:
Dim cmd As New OracleCommand
cmd.Connection = conn
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "OracleSP"
Dim p1 As OracleParameter
Dim p2 As OracleParameter
p1 = cmd.Parameters.Add("Param1", OracleType.NVarChar)
p1.Value = "Value1"
p2 = cmd.Parameters.Add("Param2", OracleType.Double)
p2.Value = 10
cmd.ExecuteNonQuery()
SQL Server:
cmd.Connection = conn
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "SqlSP"
cmd.Parameters.Add("@Param1", SqlDbType.Int)
cmd.ExecuteNonQuery()
我不确定Oracle,因为我没有这样做(我认为它应该可行)但是使用Sql server你可以使用:
SqlCommandBuilder.DeriveParameters(cmd)
在命令上填充SqlParametersCollection,而不是像我一样设置它们。 MSDN documentation
之后,您可以循环播放它们并根据需要设置您的值。