PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Декларирайте променлива тип ред в PL/pgSQL

Един начин:използвайте record променлива:

DO $$
DECLARE
   _rec record;
BEGIN
SELECT INTO _rec
            id, name, surname FROM t WHERE id = ?;
END $$;

Обърнете внимание, че структурата на record типът е недефиниран, докато не бъде присвоен. Така че не можете да препращате към колони (полета), преди да направите това.

Друг начин:присвояване на множество скаларни променливи:

DO $$
DECLARE
   _id int;
   _name text;
   _surname text;
BEGIN
SELECT INTO _id, _name, _surname
             id,  name,  surname FROM t WHERE id = ?;
END $$;

Що се отнася до първия ви пример:%ROWTYPE е просто шум в Postgres. Документацията :

И така:

DO $$
DECLARE
   my_data t;  -- table name serves as type name, too. 
BEGIN
   SELECT INTO my_data  * FROM t WHERE id = ?;
END $$;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да промените реда на колоните

  2. Часовата зона наясно с дата и час за низ?

  3. Heroku psql:ФАТАЛНО:останалите слотове за връзка са запазени за връзки на суперпотребител без репликация

  4. Postgres:ГРЕШКА:стойността е твърде дълга за type character varying(255) Не указва полето

  5. Тип поле на Rails 4 за множествен избор с предварително дефинирани стойности