|
|
|
Функция, возвращающая одну запись таблицы
|
|||
|---|---|---|---|
|
#18+
Нужно решить учебную задачу. Есть схема "Справочники". В ней таблица "Страны". Таблица имеет поля: "Код" serial; "Наименование" character varying(150). "Наименование" уникально и повторяться не может. Хочу сделать функцию, которая бы возвращала одну запись этой таблицы, по переданному наименованию. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Функция создается без проблем. Однако при ее использовании возникает ошибка: Код: plsql 1. ОШИБКА: у функций, возвращающих запись, должен быть список с определением колонок LINE 18: SELECT "Наименование" FROM "Справочники"."ПолучитьСтрану"('Р... Помогите решить проблему. Заранее благодарю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2015, 12:58 |
|
||
|
Функция, возвращающая одну запись таблицы
|
|||
|---|---|---|---|
|
#18+
ElfixПомогите решить проблему. Стена - там. Пробуйте Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2015, 14:36 |
|
||
|
Функция, возвращающая одну запись таблицы
|
|||
|---|---|---|---|
|
#18+
Спасибо. Но все равно не работает. Сообщение: ОШИБКА: неоднозначная ссылка на колонку "Наименование" LINE 1: SELECT * FROM "Страны" WHERE "Наименование" = $1... ^ DETAIL: Подразумевается ссылка на переменную PL/pgSQL или колонку таблицы. QUERY: SELECT * FROM "Страны" WHERE "Наименование" = $1 LIMIT 1 OFFSET 0 CONTEXT: функция PL/pgSQL "Справочники"."ПолучитьСтрану"(character varying), строка 6, оператор SQL-оператор ********** Ошибка ********** ОШИБКА: неоднозначная ссылка на колонку "Наименование" SQL-состояние: 42702 Подробности: Подразумевается ссылка на переменную PL/pgSQL или колонку таблицы. Контекст: функция PL/pgSQL "Справочники"."ПолучитьСтрану"(character varying), строка 6, оператор SQL-оператор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2015, 17:47 |
|
||
|
Функция, возвращающая одну запись таблицы
|
|||
|---|---|---|---|
|
#18+
Elfix, 1) Если наименование уникально (т.е. на него наложено соответствующее ограничение), то LIMIT 1 вам не нужен. 2) Перепишите функцию на RETURNS TABLE, и будет вам счастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2015, 01:42 |
|
||
|
Функция, возвращающая одну запись таблицы
|
|||
|---|---|---|---|
|
#18+
Elfix, SELECT "Наименование" FROM "Справочники"."ПолучитьСтрану"('Россия') AS ("Код" INTEGER, "Наименование" TEXT); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2015, 11:07 |
|
||
|
Функция, возвращающая одну запись таблицы
|
|||
|---|---|---|---|
|
#18+
ElfixСпасибо. Но все равно не работает. Сообщение: ОШИБКА: неоднозначная ссылка на колонку "Наименование" LINE 1: SELECT * FROM "Страны" WHERE "Наименование" = $1... ^ DETAIL: Подразумевается ссылка на переменную PL/pgSQL или колонку таблицы. QUERY: SELECT * FROM "Страны" WHERE "Наименование" = $1 LIMIT 1 OFFSET 0 CONTEXT: функция PL/pgSQL "Справочники"."ПолучитьСтрану"(character varying), строка 6, оператор SQL-оператор ********** Ошибка ********** ОШИБКА: неоднозначная ссылка на колонку "Наименование" SQL-состояние: 42702 Подробности: Подразумевается ссылка на переменную PL/pgSQL или колонку таблицы. Контекст: функция PL/pgSQL "Справочники"."ПолучитьСтрану"(character varying), строка 6, оператор SQL-операторвторое "наименование" (в "неоднозначности"), сюрпрайс -- это аргумент функции. т.ч. специфицируйте принадлежность кактотак Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2015, 21:13 |
|
||
|
Функция, возвращающая одну запись таблицы
|
|||
|---|---|---|---|
|
#18+
какбекактотак Код: sql 1. 2. 3. 4. 5. 6. 7. 8. -- поправил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2015, 21:17 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38862726&tid=1998226]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
178ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 201ms |
| total: | 441ms |

| 0 / 0 |
