【问题标题】:Executing stored procedure in vb.net在 vb.net 中执行存储过程
【发布时间】:2011-12-13 12:07:35
【问题描述】:

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

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

命令文本作为 Select functionName(?,?,?,?,?,?,?,?) from dual; (对于甲骨文) 添加函数的参数值

现在执行无效参数的 ExecuteScalar。

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

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

谢谢 鲁佩什

【问题讨论】:

    标签: vb.net ado.net oracle11g


    【解决方案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 服务器:

      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

    之后,您可以遍历它们并根据需要设置您的值。

    【讨论】:

    • 谢谢,但在这种情况下,我们需要知道函数的参数名称才能执行存储过程
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    相关资源
    最近更新 更多