Oracleの実行中に問題が発生しました。私はテーブルloginfo(username,password,type)
をしたと私はこのような関数ました:OCI_NO_DATA oci8 oracleエラー
CREATE OR REPLACE FUNCTION login(name in varchar2,pass in varchar2)
RETURN integer
IS
v_type integer;
BEGIN
Select loginfo.type
INTO v_type from loginfo
where loginfo.username=name
and loginfo.password=pass;
RETURN (v_type);
END;
を私はLOGINFOの2種類をしました。型1と2を入力します。私がphpからこの関数を呼び出すと、型1を返すべきであるパラメータを返します。この関数をタイプ2を返すパラメータで呼び出すと、PHPページにエラーOCI_NO_DATA
が返されます。私は、Oracleから関数を呼び出すときしかし、それは私のパラメータがusername = '8801716560946'
とpassword = '123456'
あるときには、2型を返す必要があります。2.
を返します。
@AwladLiton - しかし、あなたは 'username'と' password'バインド変数にどのような価値を与えていますか?このエラーは、PHPを使用しているときにバインド変数の値が異なっていることを強く暗示しています(または、関数を実行しているコミットしていない同じOracleセッションで見つかるはずの行を挿入した) –
おかげで洞窟。私は、それは私のパラメータがnumbers.thatのような場合は、username = '123456789'とパスワード= '123'それは何も値を返していないことを意味する場合は動作しないことがわかります。もし私がusername = 'awlad'やパスワード= 'awlad'itのようなパラメータを与えたら...私は驚いています! –
@AwladLiton - データベース列が両方とも 'VARCHAR2'として定義され、両方のデータセットがテーブルに存在し、余分なスペースがなく、数字に先行ゼロがないとすれば、あなたはPHPでデータをバインドするときに間違ったデータ型を指定する。 –