2011-12-13 150 views
0

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

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

命令文本为从double中选择functionName(?,?,?,?,?,?,?,?); (对于Oracle) 添加函数的参数值

现在执行不工作的ExecuteScalar说非法参数。

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

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

感谢 Rupesh

回答

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() 

我不知道有关甲骨文公司的,因为我没有完成它(我认为它应该工作),但与Sql服务器,您可以使用:

SqlCommandBuilder.DeriveParameters(cmd) 

在命令上填充SqlParametersCollection,而不是象我那样设置它们。 MSDN documentation

之后,你可以循环通他们和你的价值观根据需要进行设定。

+0

感谢您的理解,但在这种情况下,我们需要知道函数的参数名称,以便执行存储过程 – Rupesh

+0

编辑答案deriveParameters – Jay