我在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的;類型1和2.如果我用一個參數返回類型1的參數來調用這個函數。當我用一個應該返回類型2的參數調用該函數時,它會在PHP頁面中返回錯誤OCI_NO_DATA
。但是,當我從Oracle調用函數時,返回2.
當我的參數是username = '8801716560946'
和password = '123456'
時,它應返回類型2。
@AwladLiton - 但是你提供的'username'和'password'綁定變量的值是什麼?這個錯誤強烈地暗示了當你使用'PHP'時綁定變量值是不同的(或者你插入了它應該在你正在運行該函數並且沒有提交的同一個Oracle會話中找到的行) – 2012-04-04 21:17:57
感謝洞穴。我發現它的工作原理如果我的參數像數字那樣工作,這意味着如果username ='123456789'和password ='123',它不會返回任何值。如果我給參數像用戶名='awlad'和密碼='awlad'it工作...我很驚訝! – 2012-04-04 21:31:44
@AwladLiton - 假設數據庫列都被定義爲'VARCHAR2',並且表中存在兩組數據,並且沒有多餘的空格,並且數字中沒有前導零,我猜你是在PHP中綁定數據時指定錯誤的數據類型。 – 2012-04-04 21:38:03