我有一個相當大且複雜的SQL塊,它爲特定頁面創建報告。這個SQL在頂部有幾個變量聲明,我懷疑是給了我一些問題。ODBC,PHP和SQL變量
當我得到ODBC結果時,必須使用odbc_next_result()
來越過似乎與變量一起返回的空結果集。這似乎沒有問題。當我最終得到「真實」結果時,odbc_num_rows()
告訴我它有超過12000行,實際上它有6個。
這裏是我正在做的一個例子,給你一個想法,沒有進入細節上的類定義:
$report = $db->execute(Reports::create_sql('sales-report-full'));
while(odbc_num_rows($report) <= 1) {
odbc_next_result($report);
}
echo odbc_num_rows($report);
的SQL看起來是這樣的:
DECLARE @actualYear int = YEAR(GETDATE());
DECLARE @curYear int = YEAR(GETDATE());
IF MONTH(GETDATE()) = 1
SELECT @curYear = @curYear - 1;
DECLARE @lastYear int = @curYear-1;
DECLARE @actualLastYear int = @actualYear-1;
DECLARE @tomorrow datetime = DATEADD(dd, 1, GETDATE());
SELECT * FROM really_big_query
對於一個實驗,嘗試更改proc並不實際返回任何內容(即註釋掉select語句)。 odbc_num_rows()是否仍然返回超過12k行? – Ruslan
嘗試在SQL語句塊的頂部添加'set nocount on;'。 Sql返回每個命令返回給客戶端的行數,這會導致這些空的結果集。 – dav1dsm1th
@ dav1dsm1th - 好的電話,我忽略了。它已經解決了這個問題。你可以把它作爲答案發布,以便我可以接受它嗎? –