sql >> Database >  >> RDS >> PostgreSQL

Hoe lokale variabelen declareren in postgresql?

Postgresql ondersteunt historisch gezien geen procedurele code op commandoniveau - alleen binnen functies. In Postgresql 9 is echter ondersteuning toegevoegd om een ​​inline codeblok uit te voeren dat zoiets effectief ondersteunt, hoewel de syntaxis misschien een beetje vreemd is en er veel beperkingen zijn in vergelijking met wat je met SQL Server kunt doen. Het inline codeblok kan met name geen resultatenset retourneren, dus kan het niet worden gebruikt voor wat u hierboven schetst.

Over het algemeen, als je een procedurele code wilt schrijven en deze een resultaat wilt laten retourneren, moet je deze in een functie plaatsen. Bijvoorbeeld:

CREATE OR REPLACE FUNCTION somefuncname() RETURNS int LANGUAGE plpgsql AS $$
DECLARE
  one int;
  two int;
BEGIN
  one := 1;
  two := 2;
  RETURN one + two;
END
$$;
SELECT somefuncname();

Het PostgreSQL-draadprotocol staat, voor zover ik weet, geen dingen toe als een opdracht die meerdere resultatensets retourneert. U kunt dus niet zomaar T-SQL-batches of opgeslagen procedures toewijzen aan PostgreSQL-functies.




  1. Een kolomwaarde bijwerken, een deel van een tekenreeks vervangen

  2. Hoe de gemiddelde verkoop per dag te berekenen in MySQL

  3. Selecteer een groep rijen die overeenkomen met alle items in een lijst

  4. Record geretourneerd door functie heeft kolommen aaneengeschakeld