powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
19 сообщений из 19, страница 1 из 1
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38530634
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Собственно, весь вопрос в названии темы. Есть база MySQL и программа-клиент, которая с ней работает через логин и пароль. Но мне нужно сделать свое ПО под эту базу. Пробовал запросы SELECT, UPDATE, INSERT, пишет, что нет доступа для данного пользователя. Есть процедуры, хранящиеся в таблице Routine, к которым есть доступ на выборку. В одной из процедур 23 параметра. Можно ли как-то узнать, что это за параметры?
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38530692
OlegROA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть микросхема, описание которой хранится в сейфе, к которому нет доступа.
У микросхемы куча ножек.
Вопрос - можно узнать к каким ножкам чего подключать?

Извините, но это - вольный перевод Вашего вопроса.
Если Вы знакомы с процедурным программированием, то должны знать, что параметры процедуры никаким образом явно не связаны с кодом, в котором они будут использоваться. Поэтому и рекомендуют в каждом учебнике давать переменным осмысленные названия.
Максимум, что можно узнать (и то - через API ODBC) - тип параметра. Т.е., IN или OUT.

Если Вы пытаетесь методом "тыка" написать ПО для работы с базой, к которой у Вас нет доступа, то можно лишь посоветовать или пройтись отладчиком по коду той чужой проги в поисках запросов, которые она шлет в базу или каким-либо другим образом перехватить эти запросы.
Если эта прога работает через ODBC, то можно в администраторе ODBC включить трассировку, с помощью которой можно будет увидеть все запросы, которые посылаются в базу.
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38531008
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том и дело, что я только начинаю с этим знакомиться. Хочу хоть как-то сократить ручной труд себе. А про трассировку это мысль! Спасибо за наводку!
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38549656
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтоб не плодить тем, попробую задать еще один вопрос здесь.
Разработчик так и не дал мне текст процедуры, зато дал входные параметры:
PROCEDURE `sotrud_insert_update`(IN a_id INT,
a_ot VARCHAR(32)CHARACTER SET cp1251,
a_num_first VARCHAR(16)CHARACTER SET cp1251,
a_date_first DATE,
a_pri VARCHAR(64)CHARACTER SET cp1251,
a_fam VARCHAR(32)CHARACTER SET cp1251,
a_name VARCHAR(32)CHARACTER SET cp1251,
a_otch VARCHAR(32)CHARACTER SET cp1251,
a_bd DATE,
.....
OUT b_id INT,
OUT b_kod_result TINYINT,
OUT b_error VARCHAR(128))
При добавлении a_id установить равным нулю.

Всего 23 параметра

мой код следующий:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Dim cmdf As ADODB.Command
Dim prm As ADODB.Parameter
Set cmdf = New ADODB.Command

cmdf.ActiveConnection = cn

cmdf.CommandType = adCmdStoredProc
cmdf.CommandText = "sotrud_insert_update"

cmdf.NamedParameters = False
cmdf.Parameters.Append cmdf.CreateParameter("@a_in", adInteger, adParamInput, , 0)
cmdf.Parameters.Append cmdf.CreateParameter("@a_ot", adVarChar, adParamInput, 32, "???")
cmdf.Parameters.Append cmdf.CreateParameter("@a_num_first", adVarChar, adParamInput, 16, "0289")
cmdf.Parameters.Append cmdf.CreateParameter("@a_date_first", adDBDate, adParamInput, , "2014-02-04")
cmdf.Parameters.Append cmdf.CreateParameter("@a_pri", adVarChar, adParamInput, 64, "0289")
cmdf.Parameters.Append cmdf.CreateParameter("@a_fam", adVarChar, adParamInput, 32, "fam")
cmdf.Parameters.Append cmdf.CreateParameter("@a_name", adVarChar, adParamInput, 32, "im")
cmdf.Parameters.Append cmdf.CreateParameter("@a_otch", adVarChar, adParamInput, 32, "ot")
cmdf.Parameters.Append cmdf.CreateParameter("@a_bd", adDBDate, adParamInput, , "1998-02-04")
.....
cmdf.Parameters.Append cmdf.CreateParameter("@b_id", adInteger, adParamOutput)
cmdf.Parameters.Append cmdf.CreateParameter("@b_kod_result", adTinyInt, adParamOutput)
cmdf.Parameters.Append cmdf.CreateParameter("@b_error", adVarChar, adParamOutput, 128)

cmdf.Execute




SQL возвращает ошибку: out or inout argument 21 for routine is not a variable or new pseudo-variable in before trigger

В чем может быть проблема? Помогите с решением пожалуйста.
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38549672
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
„Дорогие учёные. У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит“.

Разработчик есть? текста не дал? вот он пусть и трахается с проблемой.
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38549912
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да это больше моя проблема, чем его. Просто себе стараюсь сделать меньше работы. Хочу сделать экспорт данных из одной таблицы в другую, а то приходится все это в ручную забивать.
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38550072
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Offtop

Это так теперь учат? IvanCда это больше моя проблема, чем его. Просто себе стараюсь сделать меньше работы. Хочу сделать экспорт данных из одной таблицы в другую, а то приходится все это в ручную забивать. Правописание наречий , п.89
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38550179
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007,
разве у нас ветка называется "Русский язык"? Если б мне нужна была помощь в нем, я б не здесь вопросы задавал.
Не поленился и почитал твои сообщения на форуме - тоже есть к чему придраться.
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38550671
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanCда это больше моя проблема, чем его.Твоя проблема это только потому, что ты не выбил из этого придурка разработчика необходимые тебе для работы данные. Он дал тебе лысый интерфейс без пограничных условий - отсюда и грабли. Если некий "argument 21" некоего триггера невалиден при твоих входных данных (кстати, не факт, что он и в хранимке 21-й), а ты выполнил все его требования в части соблюдения типов передаваемых данных - это проблема разработчика.
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38550889
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А, кстати, не написал, что пробовал подрубаться MySQL connector'ом, выполнял данную процедуру с параметрами, и она отрабатывала без ошибок. Правда, запись в таблицу так и не добавилась. Ладно, буду выпрашивать текст. Гадать можно бесконечно.
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38550897
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanCона отрабатывала без ошибок. Правда, запись в таблицу так и не добавилась.И ты всё ещё думаешь, что проблемы на твоей стороне? аднака...
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38551103
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanCCygapb-007,
разве у нас ветка называется "Русский язык"? Если б мне нужна была помощь в нем, я б не здесь вопросы задавал.
Не поленился и почитал твои сообщения на форуме - тоже есть к чему придраться.Не хотел развивать спам-тему, но все же - прочитать один параграф и принять к сведению требует гораздо меньше трудозатрат, чем перелопачивание сообщений по всему форуму в попытках уличить в безграмотности.
ЯТД.
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38575150
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всем доброго времени суток. Продолжаю свою тему. С параметрами я худо-бедно разобрался и записал не через параметры, а строкой:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
insert_update (" & _
                                                "'0'," & _
                                                "'" & rs.Fields(15) & "'," & _
                                                "'" & rs.Fields(14) & "'," & _
                                                "'" & Format(frmDate.txtDate, "yyyy-mm-dd") & "'," & _
                                                "'" & rs.Fields(5) & rs.Fields(6) & rs.Fields(7) & "'," & _
                                                "'" & rs.Fields(1) & "'," & _
                                                "'" & rs.Fields(2) & "'," & _
                                                "'" & rs.Fields(3) & "'," & _
                                                "'" & Format(rs.Fields(16), "yyyy-mm-dd") & "'," & 
                          ....................................



Сейчас возникла проблема в передаче даты в эту процедуру. Последний параметр здесь - это дата, которая может быть, а может иметь значение NULL. В связи с этим, хранимая процедура ругается на дату, если она NULL. Как быть в этой ситуации?
Заранее спасибо!
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38575179
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanCКак быть в этой ситуации?
Вероятно, откорректировать текст запроса, и вместо
Код: sql
1.
WHERE `date` = ':date'


записать что-то вроде
Код: sql
1.
WHERE IFNULL(`date`, 1, `date` = ':date')
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38575181
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон
Код: sql
1.
WHERE IFNULL(':date', 1, `date` = ':date')
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38575192
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Сейчас опробую!
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38575253
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я извиняюсь, не сказал сразу, но мне именно NULL нужно передавать, если нет даты. Я так понимаю, что в моем случае NULL передается, но как строковый параметр, т.к. стоят "'"
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38575306
IvanC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не стал париться, проверяю перед выполнением хранимки дату, если пустая - процедура выполняется с одними параметрами, если нет, то с другими.
...
Рейтинг: 0 / 0
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
    #38576785
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanCЧтоб не плодить тем, попробую задать еще один вопрос здесь.
Разработчик так и не дал мне текст процедуры, зато дал входные параметры:
PROCEDURE `sotrud_insert_update`(IN a_id INT,
a_ot VARCHAR(32)CHARACTER SET cp1251,
a_num_first VARCHAR(16)CHARACTER SET cp1251,
a_date_first DATE,
a_pri VARCHAR(64)CHARACTER SET cp1251,
a_fam VARCHAR(32)CHARACTER SET cp1251,
a_name VARCHAR(32)CHARACTER SET cp1251,
a_otch VARCHAR(32)CHARACTER SET cp1251,
a_bd DATE,
.....
OUT b_id INT,
OUT b_kod_result TINYINT,
OUT b_error VARCHAR(128))
При добавлении a_id установить равным нулю.

Всего 23 параметра

мой код следующий:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Dim cmdf As ADODB.Command
Dim prm As ADODB.Parameter
Set cmdf = New ADODB.Command

cmdf.ActiveConnection = cn

cmdf.CommandType = adCmdStoredProc
cmdf.CommandText = "sotrud_insert_update"

cmdf.NamedParameters = False
cmdf.Parameters.Append cmdf.CreateParameter("@a_in", adInteger, adParamInput, , 0)
cmdf.Parameters.Append cmdf.CreateParameter("@a_ot", adVarChar, adParamInput, 32, "???")
cmdf.Parameters.Append cmdf.CreateParameter("@a_num_first", adVarChar, adParamInput, 16, "0289")
cmdf.Parameters.Append cmdf.CreateParameter("@a_date_first", adDBDate, adParamInput, , "2014-02-04")
cmdf.Parameters.Append cmdf.CreateParameter("@a_pri", adVarChar, adParamInput, 64, "0289")
cmdf.Parameters.Append cmdf.CreateParameter("@a_fam", adVarChar, adParamInput, 32, "fam")
cmdf.Parameters.Append cmdf.CreateParameter("@a_name", adVarChar, adParamInput, 32, "im")
cmdf.Parameters.Append cmdf.CreateParameter("@a_otch", adVarChar, adParamInput, 32, "ot")
cmdf.Parameters.Append cmdf.CreateParameter("@a_bd", adDBDate, adParamInput, , "1998-02-04")
.....
cmdf.Parameters.Append cmdf.CreateParameter("@b_id", adInteger, adParamOutput)
cmdf.Parameters.Append cmdf.CreateParameter("@b_kod_result", adTinyInt, adParamOutput)
cmdf.Parameters.Append cmdf.CreateParameter("@b_error", adVarChar, adParamOutput, 128)

cmdf.Execute




SQL возвращает ошибку: out or inout argument 21 for routine is not a variable or new pseudo-variable in before trigger

В чем может быть проблема? Помогите с решением пожалуйста.


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

Объявляет переменную через declare, задаешь ей если надо значение, затем переменную передашь в процедуру.

На выходе будешь иметь в ней выходное значение.

В ODBC правда это все можно делать напрямую, но я через odbc не пробовал никогда.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]