1
CREATE OR REPLACE
FUNCTION xxpos.IS_USER_VALID(
  user_name     IN VARCHAR,
  user_password IN VARCHAR)
RETURN boolean
AS
user_count INTEGER;
BEGIN
    SELECT COUNT(*)
    INTO user_count
    FROM xxpos.service_users
    WHERE user_id     = user_name
    AND user_password = user_password;
    IF user_count     >0 THEN
        return true;
    ELSE
       return false;
    END IF;
END;

オラクル関数を作成しました。そして、私はそれを私のアプリケーションのC#で使用しようとしました:

        Oracle.DataAccess.Client.OracleParameter[] parameters = new Oracle.DataAccess.Client.OracleParameter[3];
        parameters[0] = new Oracle.DataAccess.Client.OracleParameter("user_name", this.UserName);
        parameters[1] = new Oracle.DataAccess.Client.OracleParameter("user_password", this.Password);
        parameters[2] = new Oracle.DataAccess.Client.OracleParameter("is_valid", 
            Oracle.DataAccess.Client.OracleDbType.Object, 
            System.Data.ParameterDirection.ReturnValue);
        using (MyOracleClient myOracleClient = new MyOracleClient())
        {
            myOracleClient.MyExicuteNonQuery(Command.IsUserValid, parameters);
            this.userValid = (bool)parameters[2].Value;
        }

しかし、うまくいきません。クラウド、C# データベース接続でパラメーターを使用する正しい方法を教えてください。

4

2 に答える 2

4

オラクルのドキュメントから:

関数に位置(デフォルト)でバインドする場合、ODP.NETでは、戻り値が最初にバインドされ、他のパラメータよりも先にバインドされると想定されます。

うるさい、私は知っています。

于 2013-06-10T13:59:22.953 に答える