如何在ADO中调用以下oracle函数.. NET使用asp.net c#

本文关键字:NET 函数 使用 asp net oracle ADO 调用 | 更新日期: 2023-09-27 18:10:27

如何在ADO中调用下列oracle函数。NET使用asp.net c#

 CREATE FUNCTION AuthenticateUser(UserName IN VARCHAR2,Password IN VARCHAR2)
   RETURN NUMBER 
    IS
  Counts NUMBER;
  rval  Number;
   BEGIN 
       SELECT COUNT(USERNAMES) 
       INTO Counts 
       FROM tblUsers WHERE USERNAMES = UserName AND PASSWORDS = Password; 
       IF Counts = 1 THEN
      rval:=1;
       ELSE
     rval:=-1;
    END IF;
     RETURN(rval); 
    END;

如何在ADO中调用以下oracle函数.. NET使用asp.net c#

首先需要Oracle ADO。. NET库(类似于Oracle.DataAccess.dll ?),我不确定你从哪里获得,但Oracle应该能够帮助它。一旦有了它,就可以使用它提供的对象来执行查询。例如,如果您想要从查询中填充DataSet,它可能看起来像这样:

using (var connection = new OracleConnection(ConfigurationManager.ConnectionStrings["OracleDB"].ConnectionString))
using (var command = new OracleCommand(query, connection))
using (var dataAdapter = new OracleDataAdapter(command))
using (var dataSet = new DataSet())
{
    connection.Open();
    dataAdapter.Fill(dataSet);
    connection.Close();
    return dataSet;
}

注意来自该库的对象,如OracleConnectionOracleCommand。只要你有一个有效的Oracle连接字符串,这些对象应该工作得很好:

<add name="OracleDB" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=some.host.name)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=DEV)));User Id=username;Password=password;"
  providerName="Oracle" />

我想这应该行得通。这假定您已经正确地设置了与"conn"对象的连接。

 OracleCommand cmd = new OracleCommand(@"select AuthenticateUser(:USER, :PASS) " +
     "from dual", conn);
 cmd.Parameters.Add(new OracleParameter("USER", OracleDbType.VarChar));
 cmd.Parameters.Add(new OracleParameter("PASS", OracleDbType.VarChar));
 cmd.Parameters[0].Value = "yoda";
 cmd.Parameters[1].Value = "jed1!";
 int result = (int)cmd.ExecuteNonQuery();

另外,我知道内联SQL是不鼓励的,但我希望这将演示这个概念。