谁能告诉我如何通过vb.net在oracle中调用存储函数
从vb.net应该能够传递值给该函数的参数,而不知道参数名称?
示例:我有一个函数,创建或替换函数Func_Name(param1 Varchar2,param2 Varchar2)
为了通过vb.net调用这个函数,我们需要给出parameterargs.paramtername = " param1 "
是否有办法使我不能使用参数名并调用函数
提前感谢Rupesh
我们处理它的方式是通过OleDbConnection打开Oracle DB,然后调用GetOleDbSchemaTable请求procdure_columns。
例如:DataTable dtTable;
dtData = this.Connection.GetOleDbSchemaTable(OleDbSchemaGuid.Procedure_Columns, new object[] {null, null, sName, null});
foreach (DataRow theRow in dtData.Rows)
{
// Columns available in the row include:
// column_name, data_type, type_name, precision, and scale
}
然后,如果您需要在没有有效参数的情况下执行它(例如,获取它公开的列),您可以使用DbNull执行它。
另外,我不记得Oracle是如何操作的,但在SQL Server中,你需要在执行函数时包含命名空间(即select * from dbo.fn_my_test())。此外,根据函数的结构,您可能必须从中选择而不是执行它。
我不确定是否可以在Oracle中使用命名参数。
创建参数化查询时,尝试使用问号作为占位符:
Select col1, col2 From tablename Where col1 = ? and col2 = ?
然后,确保以正确的顺序将参数添加到命令对象。
您不需要知道调用它的参数名称。你需要知道它们的数量和类型将参数名添加到调用中意味着您不必传递所有参数名,并且/或者您可以将它们以不同的顺序传递给SP的签名。
把它当作参数化查询来调用。
伪代码int customer_ID = 786;
Command.CommandText = 'Exec SP_MYProc @MyVar';
Command.Parameters.Add(new Parameter('MyVar',DbType.Int,customer_ID));
Command.Exec