[英]PL/SQL not fetching any rows with null values
我正在使用PL / SQL連接嘗試從dummie數據庫中獲取行。 但是,似乎沒有選擇任何具有空值的行。 在命令行上測試相同的SQL命令確實可行。
我創建了以下測試表:
CREATE TABLE test
(
id number(4) primary key,
test_field VARCHAR(255)
);
並插入以下偽數據:
INSERT INTO test
(id, test_field) VALUES (1, 'test1');
INSERT INTO test
(id, test_field) VALUES (2, NULL);
當我在命令行SELECT * FROM test上執行以下SQL命令時;
我收到2行,其數據與預期的一樣(第二行沒有test_field值)
但是,執行相同的命令槽
$conn = oci_connect(..., ..., ...);
if (!$conn) { // error handling }
$stid = oci_parse($conn, 'SELECT * FROM test');
oci_execute($stid);
while (($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS))) {
var_dump($row);
}
它一會兒什么也沒到達。
這是抽象的sql數據,當我使用較大的數據文件進行測試時,似乎會提取沒有空列的任何行(如果需要,我可以發布數據集)。 同樣,“ SELECT 1,null FROM dual”之類的東西也會返回空值。
我已經為此努力了幾個小時。 我希望你們中的任何人都可以給我一些指示,指出出了什么問題。
預先感謝!
您使用什么版本的php和oracle? 我試圖重現您的問題,但得到了完美的答復:
array(2) {
["ID"]=>
string(1) "1"
["TEST_FIELD"]=>
string(5) "test1"
}
array(2) {
["ID"]=>
string(1) "2"
["TEST_FIELD"]=>
NULL
}
如果您根本沒有得到任何輸出,則確實應該像Michael建議的那樣打開error_reporting。
不要添加分號,因為這實際上是一個錯誤,因為這是一個SQL語句,而不是PL / SQL語句。
這就是PHP文檔所說的:
SQL語句不應以分號(“;”)結尾。 PL / SQL語句應以分號(“;”)結尾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.