如何在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;
首先需要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;
}
注意来自该库的对象,如OracleConnection
和OracleCommand
。只要你有一个有效的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是不鼓励的,但我希望这将演示这个概念。