|
|
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток, работники клавиатуры! Есть программа для работы с БД. Для доступа к БД используется dbExpress, чтобы обеспечить работу с любой БД SQL. Сегодня при запуске непонятная ситуация: Код: pascal 1. 2. 3. 4. 5. Запускаю программу и при попытке установить параметры хранимой процедуры получаю ошибку "Parameter "u_name" not found."(как-то так, емнип). Данный код работал в течение 2-3 месяцев без ошибок. У меня Delphi 10.2, если это важно. Компонент создается динамически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2019, 18:25 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_is, Не знаю, что у тебя зв процедура, кто ёё создавал и какая у тебя версия сервера. У меня такой процедуры нет у меня есть вот такоеValue NameMicrosoft SQL Server 2017 (RTM-CU14) (KB4484710) - 14.0.3076.1 (X64) Mar 12 2019 19:29:19 Copyright (C) 2017 Microsoft Corporation Developer Edition (64-bit) on Windows 10 Pro for Workstations 10.0 <X64> (Build 17763: ) @@VERSION14 MICROSOFTVERSION259 SUSER_IDgator''s eater .SUSER_NAME1 USER_IDdbo CURRENT_.USER ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2019, 20:54 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
Gator, Спасибо, друг. У меня firebird 3.0. Процедуру создал я. Какие ещё данные тебе предоставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2019, 21:28 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_is, FProc - что за компонент-то? Вообще, обычно, если что-то работало, а потом вдруг сломалось, то надо проверять, что изменилось перед тем как "вдруг сломалось". Если компонент создается в рантайме, видимо, почему-то не грузятся метаданные о параметрах процедуры. Либо их загрузка выключена, либо что-то поломалось. На всякий случай: http://docwiki.embarcadero.com/RADStudio/Rio/en/Working_with_Stored_Procedure_Parameters ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2019, 23:44 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_is, Такое бывает. Попробуйте: 1) очистить параметры 2) обратиться к ним не по имени, а по индексу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 00:45 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
kdv, FProc - TSQLStoredProc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 07:25 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
Сейчас откатился на более раннюю версию проекта, чтобы убрать изменения, сделанные за неделю, все равно не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 08:43 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
kdvmy_nik_name_is, http://docwiki.embarcadero.com/RADStudio/Rio/en/Working_with_Stored_Procedure_Parameters Это я уже читал, но все равно спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 08:44 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_isСейчас откатился на более раннюю версию проекта, чтобы убрать изменения, сделанные за неделю, все равно не работает. А в базе есть такие параметры у процедуры? М.б. что-то изменилось в самой базе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 09:14 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_is, В АДО аналогичная проблема решалась приблизительно так, как я написал для SQLStoredProc1 Код: pascal 1. 2. 3. 4. 5. 6. 7. ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 09:27 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
prepare? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 09:49 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
энди, True пробовал сбрасывать, а потом ставить флаг, не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 09:56 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_is, ну давай я,что ли, попрошу у тебя текст процедуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 10:10 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
Gerasimenkomy_nik_name_is, В АДО аналогичная проблема решалась приблизительно так, как я написал для SQLStoredProc1 Код: pascal 1. 2. 3. 4. 5. 6. 7. ... Попробовал. Cannot perform this operation on a closed dataset ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 11:46 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
ёёёёё, Лови create or alter procedure GET_USER_ID ( U_NAME varchar(100)) returns ( U_ID integer) as begin select u_id from user_names where nick = :u_name into :u_id; if (u_id is null) then u_id = -1; suspend; end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 11:48 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_is, Сделай через Query. P.S. Я всегда использовал связку: Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 11:54 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
Gerasimenko, Ой, сори. Unable to determine field names for %s ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 11:54 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_is, И в процедуре у себя пропиши или SELECT FIRST 1 .... или UNIQUE наложи - там потенциальная дырка может быть, если пользователей с одним именем несколько окажется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 11:56 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_is, вообще-то suspend предполагает использование процедуры как слелективной, т.е. select * from proc, в этом случае нужно использовать компонент для селекта, а не TSQLStoredProc http://www.ibase.ru/sp_call/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 12:02 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
kdv, Имя пользователя всегда уникально. Двух одинаковых быть не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 13:31 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
В справке написано, что если процедура возвращает данные, надо использовать метод Active или Open На практике оказалось, что ExecProc тоже прекрасно возвращает данные. К тому же в примере по ссылке выше Используется ExecProc для процедуры, возвращающей данные Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Исходя из этого сделал вывод, что данные можно получать любым удобным способом. Хоть select, хоть exec. Но с exec меньше возни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 13:44 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
Часть проблемы решена. Скомбинировал доступ к параметрам хранимой процедуры Код: pascal 1. 2. 3. 4. 5. Входные параметры задаю через индекс, а выходные получаю по имени параметра. Пока переписал самое важное, постепенно буду переводить на новые рельсы весь код. Спасибо всем за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 16:22 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_is, Проверь для интереса, что вернет Execute для процедуры, которая возвращает более одной строки данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 16:50 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
DarkMastermy_nik_name_is, Проверь для интереса, что вернет Execute для процедуры, которая возвращает более одной строки данных. А что ты ожидаешь получить? авторTSQLStoredProc = class(TCustomSQLDataSet) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 17:01 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_isХоть select, хоть exec. Но с exec меньше возни. suspend в процедуре не имеет смысла, если процедура не предполагает возврат больше одной "строки", и соответствено, ее не планируют вызывать через select (для получения более одной строки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 23:33 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
kdvmy_nik_name_isХоть select, хоть exec. Но с exec меньше возни. suspend в процедуре не имеет смысла, если процедура не предполагает возврат больше одной "строки", и соответствено, ее не планируют вызывать через select (для получения более одной строки).Пусть в FB я лох, но вопрос звучит иначе: "TSQLStoredProc не видит параметры процедуры". И причём тут параметры? Да хоть милиарды строк селекта и миллионы строк другого селекта. Другое дело, как дельфя несколько рекордсетов получит... Как в ADO? Каждый рекордсет своему датасету? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2019, 23:53 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
GatorИ причём тут параметры? про параметры уже обсудили. Кстати, у dbExpress эта же проблема с параметрами не только с ФБ, но и с Sybase, Oracle и прочими. Так что я ответил про то, в чём человек, видимо, плавает. Gatorкак дельфя несколько рекордсетов получит каких еще несколько рекордсетов... В ИБ-ФБ процедура возвращает только один рекордсет. И то, если вызывается по select * from proc. При execute proc никакие рекордсеты не возвращаются, возвращается одна строка с выходными параметрами. При этом рекордсет или курсор параметром быть не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2019, 00:59 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
kdv, Good night and need for sleep now... Ну про рекордсеты я в терминах MSSQL i mean. Он же может внутри ХП смешивать неколько разнных селектов (даже с разными наборами полей) и селекты с инсёртами и апдаты и делеты... Ещё и триггеры нагадить могут. Про CLR и CTP я вообще молчу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2019, 01:42 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
kdv, т.е., даже без suspend будет возвращено значение выходной переменной? А сервер ФБ жалуется, что "selectable procedure without suspend" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2019, 08:15 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_isдаже без suspend будет возвращено значение выходной переменной? по execute proc - конечно. Ещё раз - suspend - для селективных процедур, которые вызываются по select * from myproc. Такие процедуры можно вызывать по execute proc, но они будут возвращать только первую запись (потому что execute proc не предусматривает выборки нескольких записей). Тут всё написано http://www.ibase.ru/sp_call/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2019, 11:50 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_is Код: pascal 1. my_nik_name_is"Parameter "u_name" not found." my_nik_name_is Код: pascal 1. my_nik_name_isЧасть проблемы решена. Ну так теперь осталась самая малость - посмотреть, что за параметр создается Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2019, 14:48 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
kdvmy_nik_name_isдаже без suspend будет возвращено значение выходной переменной? по execute proc - конечно. Ещё раз - suspend - для селективных процедур, которые вызываются по select * from myproc. Такие процедуры можно вызывать по execute proc, но они будут возвращать только первую запись (потому что execute proc не предусматривает выборки нескольких записей). Тут всё написано http://www.ibase.ru/sp_call/ А вот и нет. Без suspend, внезапно "Error: Param "..." not found". Где-то я видел инфу, что suspend выталкивает параметр из процедуры. Давно, уже не помню где. Получается, что использование suspend необходимо для получения значения параметра в приложении. И даже пример видел недавно Код: sql 1. 2. 3. 4. 5. 6. Как-то так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2019, 07:17 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
Сейчас попробовал в IBExpert - процедура без suspend не возвращает параметр ни по select, ни по exec ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2019, 07:20 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
my_nik_name_isСейчас попробовал в IBExpert - процедура без suspend не возвращает параметр ни по select, ни по exec ЧЯДНТ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2019, 08:04 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
goldmi45ЧЯДНТ? select from то же работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2019, 08:19 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
wadmangoldmi45ЧЯДНТ? select from то же работает? Нет, select не работает. Требует suspend. Но my_nik_name_is сказал, что и exec не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2019, 08:49 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2019, 17:45 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
Без suspend ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2019, 17:46 |
|
||
|
TSQLStoredProc не видит параметры процедуры
|
|||
|---|---|---|---|
|
#18+
и c execute та же фигня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2019, 17:47 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2039516]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
143ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
74ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 502ms |

| 0 / 0 |
