在vb.net中执行存储过程

时间:2011-12-13 12:07:35

标签: vb.net ado.net oracle11g

我需要通过vb.net在oracle或sql中执行存储函数。

我创建了一个命令对象。根据数据库类型(oracle或SQL),我正在准备

命令文本为select函数名称(?,?,?,?,?,?,?,?); (对于Oracle) 添加函数的参数值

现在执行无法执行无效参数的ExecuteScalar。

这适用于ODBC连接字符串。但ODBC不支持64位。

我的要求:代码应该通过在运行时获取值来执行用户定义的存储过程。

由于 Rupesh

1 个答案:

答案 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

之后,您可以循环播放它们并根据需要设置您的值。