簡體   English   中英

PL / SQL不獲取具有空值的任何行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM