我在SQL Postgres的查詢,以獲得數Postgres的PERFORM COUNT(*)總是返回0
SELECT COUNT(*) AS count_variable FROM user WHERE something=something;
當我執行,它返回計數。然後,按規定被要求Postgres的功能。當這裏面查詢我用內部功能此查詢,Postgres的回答
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CONTEXT: PL/pgSQL function myfuntion(integer,integer) line 11 at SQL statement
我搜索了這個錯誤,結果發現,出現這種情況,如果查詢同時使用SELECT
返回null,但當直接在命令行上執行時,我已經獲得了價值。
還有一些帖子告訴丟棄它,我們應該使用PERFORM
而不是SELECT
。所以我在同一個函數中的新查詢是
PERFORM COUNT(*) AS count_variable FROM user WHERE something=something;
此函數開始工作後,但count_variable總是爲零。我在PERFORM查詢後使用raise檢查它。
raise notice 'count_variable: %', count_variable;
count_variable被聲明爲
DECLARE
count_variable int;
...
BEGIN
count_variable := 0;
有什麼我失蹤或者做錯了,或COUNT()函數內部功能不工作。如果count()不可用,那麼它們是用於計數行的任何替代方法。在某處我看到@@ROWCOUNT
也是一個獲取行數的變量,但它給出錯誤。
幫助將不勝感激。
可能你和MSSQL一起工作 - PostgreSQL中的存儲過程有很大不同 - 更像是Oracle--請先閱讀文檔 - 它只是幾頁https://www.postgresql.org/docs/current/ static/plpgsql.html –
感謝您的信息先生。問題發現在接受答案給出的解釋。根據需要,我使用'AS'而不是'INTO'來將其放入變量中。 –