PostgreSQL 10 Ошибка типа Rowtype в функции? - PullRequest
0 голосов
/ 13 октября 2018

Я объявляю внутри функции следующее:

SEL_USER  APP.USER % ROWTYPE;

Затем я сделал выбор

Работает отлично:

SELECT *
INTO   SEL_USER
FROM   APP.USER
WHERE  ...

Но это не работает иЯ не знаю причину.Может быть, ошибка postgresql?

SELECT USER_ID, OFFICE_FK, LOCKER, EMAIL, FULL_NAME, SURNAME1 
       SURNAME2, SOCIAL_CARD, BIRTHDATE, PREFERENCES
INTO   SEL_USER
FROM   APP.USER
WHERE  ...

Чтобы уточнить:

  • Где оператор одинаковый, и он работает.
  • Нет ошибки полей, потому что, если я сделаю выбор без, то в него сработает.

что случилось?

  • Это меняет поля,пример:
    • locker_id присвоено значение social_card (я проверяю, что значения находятся там, где они должны идти)
    • некоторые поля имеют значение null (что невозможно, поскольку они объявлены как неnull)

Это ошибка postgresql 10 или я что-то не так делаю?

В случае, если я делаю что-то плохое, буду признателен, если вы мне поможете.

(простите мой английский)

1 Ответ

0 голосов
/ 15 октября 2018

С уважением, я не знаю, почему это только дало мне проблемы с этой функцией, может быть, это была какая-то проблема контекста, потому что в других это не имело значения для порядка или отсутствовал какой-либо столбец.

Исправьте это с помощьюприведение в порядок и использование «как»

SELECT  U.USER_ID, U.OFFICE_FK, U.LOCKER, U.SOCIAL_CARD, U.EMAIL, 
        U.FULL_NAME, U.SURNAME1, U.SURNAME2, U.BIRTHDATE, U.PREFERENCES
INTO    SEL_USER 
FROM    APP.USER AS U
WHERE   ...;

Спасибо за ваше время:)

...