|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
Доброго времени суток. Перевожу базу с MS SQL на FB. Не могу правильно создать процедуру, возвращающую набор данных. Это MS SQL Код: sql 1. 2. 3. 4. 5. 6. 7.
Вот, что у меня получается Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2019, 20:32 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
Вот ошибка: Dynamic SQL Error. SQL error code = -104. Token unknown - line 4, column 52. ;. SQL Code: -104 IB Error Number: 335544569 ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2019, 20:33 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
WellSlava, это потому что ты не читаешь документацию. В Firebird выходные поля процедуры надо описывать явно. В документации поищи FOR SELECT ... INTO ... DO и SUSPEND; ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2019, 20:38 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
WellSlava, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
а вызывать так Код: plsql 1.
как-то так. В селективных ХП нужен suspend, а coalesce для null значений например. Удачи ! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2019, 21:05 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
Симонов Денис, Досконально, не читал. Обратил внимание, что надо описывать возвращаемые параметры. Посмотрел примеры, но там ничего такого нет. В MS, если возвращаются переменные (числа, строки и т.д.), то их надо явно задавать. Но наборы данных возвращаются автоматически. Я думал и здесь также организовано. А так, это крайне неудобно, так как у меня все делается на сервере, включая все селекты, а из клиента идет только вызов процедур. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2019, 21:21 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
WellSlava, ну это смотря с какой стороны посмотреть. Когда ХП вдруг начинает возвращать набор данных из-за описки в её коде это тоже не очень хорошо. В Firebird в этом смысле язык хранимок более строгий. Всё надо описывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.04.2019, 21:59 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
Симонов Денис,Если у вас есть такой код, можно ли мне его дать? Я просто с примерами разбираюсь намного быстрее, чем при чтении документации, мне не надо получать фундаментальные знания? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2019, 10:43 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
Чтение документации - навык, который не относится к фундаментальным знаниям. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2019, 11:17 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
WellSlava, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
неужели ты не смог найти это в документации? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2019, 13:18 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2019, 14:24 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
kdv, Благодарю. Понял, наконец-то. Я все ожидал задание возвращаемых переменных в виде массива или чего-то подобного, а тут оказывается возвращается по одной записи. Сейчас буду работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2019, 15:12 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
С этим разобрался. Теперь не могу понять другое - процедура возвращает набор данных с именами полей, как задавал переменные. Как сделать чтобы возвращался набор именно с именами полей? Что-то типа Код: sql 1.
не предлагать. Я уже выше писал, что на клиенте у меня идет обращение к процедуре и все. Что-то типа этого: spName.CommandText := 'Procedure1'; spName.Open; ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2019, 16:50 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
WellSlava, что сложно переменные назвать так же как поля? >> Я уже выше писал, что на клиенте у меня идет обращение к процедуре и все. не самый удобный подход. Фильтрацию уже нормально не привинтишь ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2019, 16:55 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
WellSlava Как сделать чтобы возвращался набор именно с именами полей? что??? выходные параметры (переменные) процедуры - это и есть "поля". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2019, 19:53 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
И еще до кучи: символ * в процедурах противопоказан. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.04.2019, 22:00 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
kdv,Вот именно, что названия выходных параметров, а не имена полей. У меня программа написана на MS SQL и должна теперь работать еще и на FB. У меня во всех грида и других полях прописаны названия полей, поэтому необходимо, чтобы и процедуры FB тоже возвращали имена полей. Если я переменные называю также как и поля, то выдается ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 02:23 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky,Да я понял, что изначально FB/IB не предназначен для получения наборов данных из процедур, а вот такой возврат, который организован, больше всего напоминает заплатку. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 02:27 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
WellSlavaЕсли я переменные называю также как и поля, то выдается ошибка. Врёш. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 02:46 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
WellSlavaIvan_Pisarevsky,Да я понял, что изначально FB/IB не предназначен для получения наборов данных из процедур, а вот такой возврат, который организован, больше всего напоминает заплатку. Ты смотри какой понятливый. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 02:47 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
WellSlava Если я переменные называю также как и поля, то выдается ошибка. Ну так покажи ошибку ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 07:03 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
WellSlava, Скорее всего забыл про обязательные двоеточия перед именами переменных в текстах собственно эапросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 08:23 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
Вот тело процедуры Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Мне необходимо, чтобы выходные поля были следующие: ID_Status, Status_Name Вот ошибка: Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements. Lock conflict on no wait transaction. Unsuccessful metadata update. Object PROCEDURE "" is in use. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 08:52 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
Всех благодарю за ответы. Если кто-то подскажет, как в процедуре вернуть набор данных с полями, как в запросе, то буду рад подсказке. А так вышел из положения через временную процедуру, которая собирает нужный мне набор данных. А еще одна процедура, вызываемая из клиента, преобразует псевдонимы полей в нужные мне. Понимаю, что через одно место, но у меня просто нет времени сидеть и разбираться, а надо скорее переделать программу. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 09:10 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
WellSlavaLock conflict on no wait transaction. Unsuccessful metadata update. Object PROCEDURE "" is in use. Гугл-транслейт может помочь с переводом: Конфликт блокировки при транзакции без ожидания. Неудачное обновление метаданных. Объект ПРОЦЕДУРА "" используется ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 09:20 |
|
Процедура возвращает набор данных
|
|||
---|---|---|---|
#18+
wadman, Вот только кто бы подсказал, откуда у меня в базе взялась процедура "" и как она задействована в создаваемой. А так разобрался - все можно сделать, как мне надо. Просто так получилось, что на первой же создаваемой процедуре вылезла эта ошибка, вот и зациклился. Сейчас пересоздам базу и продолжу работать. Всем всего хорошего. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.04.2019, 09:23 |
|
|
start [/forum/topic.php?fid=40&fpage=24&tid=1560737]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 293ms |
total: | 464ms |
0 / 0 |