Postgres PERFORM COUNT (*) gibt immer 0 zurück

Samrat Das

Ich hatte in SQL eine Abfrage nach Postgres, um die Zählung zu erhalten

SELECT COUNT(*) AS count_variable FROM user WHERE something=something;

Als ich ausgeführt habe, gab es die Zählung zurück. Dann wurde diese Abfrage gemäß den Anforderungen in einer Postgres-Funktion benötigt. Als ich diese Abfrage in der Funktion verwendete, antwortete Postgres

FEHLER: Die Abfrage hat kein Ziel für Ergebnisdaten.
TIPP: Wenn Sie die Ergebnisse eines SELECT verwerfen möchten, verwenden Sie stattdessen PERFORM.
KONTEXT: PL / pgSQL-Funktion myfuntion (Ganzzahl, Ganzzahl) Zeile 11 in der SQL-Anweisung

Ich habe nach diesem Fehler gesucht und festgestellt, dass dies passiert, wenn die Abfrage während der Verwendung null zurückgegeben SELECThat. Aber ich habe bereits einen Wert erhalten, als ich direkt in der Befehlszeile ausgeführt wurde.

Und auch einige Posts, die angewiesen wurden, es zu verwerfen, sollten wir PERFORManstelle von verwenden SELECT. Meine neue Abfrage innerhalb derselben Funktion war also

PERFORM COUNT(*) AS count_variable FROM user WHERE something=something;

Nachdem diese Funktion funktioniert hat, ist count_variable immer Null. Ich überprüfe es mit Raise nach PERFORM-Abfrage.

raise notice 'count_variable: %', count_variable;

count_variable wird als deklariert

DECLARE
  count_variable int;
  ...
BEGIN
  count_variable := 0;

Fehlt etwas oder mache ich etwas falsch oder funktioniert die Funktion COUNT ( ) nicht innerhalb der Funktion ? Wenn count ( ) nicht verfügbar ist, gibt es eine Alternative zum Zählen von Zeilen. Irgendwo, wo ich gesehen habe, @@ROWCOUNTist auch eine Variable, um die Zeilenanzahl zu erhalten, aber es gibt einen Fehler.

Hilfe wird sehr geschätzt.

ein Pferd ohne Name

Sie möchten das Ergebnis der Auswahl nicht verwerfen, daher ist die Ausführung die falsche Wahl. Sie möchten das Ergebnis der Abfrage in einer Variablen speichern, daher benötigen Sie eine INTOKlausel:


DECLARE
  count_variable int;
  ...
BEGIN
  SELECT COUNT(*) INTO count_variable 
  FROM "user" 
  WHERE something=something;
  ...

Nur weil Sie der Spalte einen Alias ​​geben, der mit einer Variablen identisch ist, bedeutet dies nicht, dass das Ergebnis in dieser Variablen gespeichert wird. Die Spaltennamen haben keine Beziehung zu Variablen.

Dies alles wird im Handbuch ausführlich erklärt. Insbesondere das Kapitel Ausführen einer Abfrage mit einem einzeiligen Ergebnis

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  3. 3

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  4. 4

    Eclipse Oxygen - Projekte verschwinden

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Wie kann ich den Kaskadenmodus global einstellen?

  7. 7

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  8. 8

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  9. 9

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  10. 10

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  11. 11

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  12. 12

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  13. 13

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  14. 14

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  15. 15

    Wie wählt man Unterschiede mit drei Tabellen aus?

  16. 16

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  17. 17

    Wie kann ich meine Tabelle abfragen, um sie in mySQL nach 2 Feldern zu gruppieren?

  18. 18

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  19. 19

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  20. 20

    Modbus Python Schneider PM5300

  21. 21

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

heißlabel

Archiv