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

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

Если Вы пытаетесь методом "тыка" написать ПО для работы с базой, к которой у Вас нет доступа, то можно лишь посоветовать или пройтись отладчиком по коду той чужой проги в поисках запросов, которые она шлет в базу или каким-либо другим образом перехватить эти запросы.
Если эта прога работает через ODBC, то можно в администраторе ODBC включить трассировку, с помощью которой можно будет увидеть все запросы, которые посылаются в базу.
...
Рейтинг: 0 / 0
19.01.2014, 14:45:32
    #38531008
IvanC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
В том и дело, что я только начинаю с этим знакомиться. Хочу хоть как-то сократить ручной труд себе. А про трассировку это мысль! Спасибо за наводку!
...
Рейтинг: 0 / 0
05.02.2014, 08:35:40
    #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
05.02.2014, 08:54:58
    #38549672
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
„Дорогие учёные. У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит“.

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

Это так теперь учат? IvanCда это больше моя проблема, чем его. Просто себе стараюсь сделать меньше работы. Хочу сделать экспорт данных из одной таблицы в другую, а то приходится все это в ручную забивать. Правописание наречий , п.89
...
Рейтинг: 0 / 0
05.02.2014, 13:39:46
    #38550179
IvanC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
Cygapb-007,
разве у нас ветка называется "Русский язык"? Если б мне нужна была помощь в нем, я б не здесь вопросы задавал.
Не поленился и почитал твои сообщения на форуме - тоже есть к чему придраться.
...
Рейтинг: 0 / 0
05.02.2014, 16:52:03
    #38550671
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
IvanCда это больше моя проблема, чем его.Твоя проблема это только потому, что ты не выбил из этого придурка разработчика необходимые тебе для работы данные. Он дал тебе лысый интерфейс без пограничных условий - отсюда и грабли. Если некий "argument 21" некоего триггера невалиден при твоих входных данных (кстати, не факт, что он и в хранимке 21-й), а ты выполнил все его требования в части соблюдения типов передаваемых данных - это проблема разработчика.
...
Рейтинг: 0 / 0
05.02.2014, 18:36:21
    #38550889
IvanC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
А, кстати, не написал, что пробовал подрубаться MySQL connector'ом, выполнял данную процедуру с параметрами, и она отрабатывала без ошибок. Правда, запись в таблицу так и не добавилась. Ладно, буду выпрашивать текст. Гадать можно бесконечно.
...
Рейтинг: 0 / 0
05.02.2014, 18:39:59
    #38550897
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
IvanCона отрабатывала без ошибок. Правда, запись в таблицу так и не добавилась.И ты всё ещё думаешь, что проблемы на твоей стороне? аднака...
...
Рейтинг: 0 / 0
05.02.2014, 21:12:45
    #38551103
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
IvanCCygapb-007,
разве у нас ветка называется "Русский язык"? Если б мне нужна была помощь в нем, я б не здесь вопросы задавал.
Не поленился и почитал твои сообщения на форуме - тоже есть к чему придраться.Не хотел развивать спам-тему, но все же - прочитать один параграф и принять к сведению требует гораздо меньше трудозатрат, чем перелопачивание сообщений по всему форуму в попытках уличить в безграмотности.
ЯТД.
...
Рейтинг: 0 / 0
28.02.2014, 12:32:40
    #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
28.02.2014, 12:52:54
    #38575179
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
IvanCКак быть в этой ситуации?
Вероятно, откорректировать текст запроса, и вместо
Код: sql
1.
WHERE `date` = ':date'


записать что-то вроде
Код: sql
1.
WHERE IFNULL(`date`, 1, `date` = ':date')
...
Рейтинг: 0 / 0
28.02.2014, 12:53:57
    #38575181
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
Пардон
Код: sql
1.
WHERE IFNULL(':date', 1, `date` = ':date')
...
Рейтинг: 0 / 0
28.02.2014, 12:57:33
    #38575192
IvanC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
Спасибо! Сейчас опробую!
...
Рейтинг: 0 / 0
28.02.2014, 13:47:34
    #38575253
IvanC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
Я извиняюсь, не сказал сразу, но мне именно NULL нужно передавать, если нет даты. Я так понимаю, что в моем случае NULL передается, но как строковый параметр, т.к. стоят "'"
...
Рейтинг: 0 / 0
28.02.2014, 14:27:21
    #38575306
IvanC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним?
Не стал париться, проверяю перед выполнением хранимки дату, если пустая - процедура выполняется с одними параметрами, если нет, то с другими.
...
Рейтинг: 0 / 0
03.03.2014, 13:26:25
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Можно ли узнать входные параметры хранимой процедуры, если доступ только к ним? / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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