Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Передача параметров в хранимую процедуру по именам параметров. Не по порядку. / 4 сообщений из 4, страница 1 из 1
29.06.2004, 12:58
    #32580958
Николай МВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача параметров в хранимую процедуру по именам параметров. Не по порядку.
Простейшая хранимая процедура с тремя параметрами:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create  proc my_tmp
	@p0	int =  0 ,	@p1	int =  0 ,	@p2	int =  0 
as
set nocount on
declare @msg	nvarchar( 100 )

set @msg = '@p0 = '+convert(nvarchar,@p0)+'; @p1 = '+convert(nvarchar,@p1)+'; @p2 = '+convert(nvarchar,@p2)
raiserror (@msg,  16 ,  1 )

Если вызвать его в Query Analyzer:
Код: plaintext
1.
exec my_tmp @p2 =  10 , @p1 =  5 

То все класс! Выдает: @p0 = 0; @p1 = 5; @p2 = 10

Однако, когда вызываю с клиента:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Dim cmd
Dim conn
Dim rs
Dim ob_Parameter

	Set conn = Workarea.AdoConnection
	Set cmd = CreateObject("ADODB.Command")
	Set cmd.ActiveConnection = conn
	cmd.CommandText = "my_tmp"
	cmd.CommandType = adCmdStoredProc

	Set ob_Parameter = cmd.CreateParameter("@p2", adInteger, adParamInput)
	ob_Parameter.Value =  10 
	cmd.Parameters.Append ob_Parameter

	Set ob_Parameter = cmd.CreateParameter("@p1", adInteger, adParamInput)
	ob_Parameter.Value =  5 
	cmd.Parameters.Append ob_Parameter
	
	cmd.Execute

То на названия параметров совершенно не обращает внимания:
Выдает: @p0 = 10; @p1 = 5; @p2 = 0

Зачем тогда вообще названия параметров, если они не играют роли?
Как заставить их заработать?
...
Рейтинг: 0 / 0
29.06.2004, 13:04
    #32580976
paparome
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача параметров в хранимую процедуру по именам параметров. Не по порядку.
авторЗачем тогда вообще названия параметров, если они не играют роли?
Чтобы к ним обращаться после работы процедуры если это output параметры
...
Рейтинг: 0 / 0
29.06.2004, 13:11
    #32580990
Николай МВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача параметров в хранимую процедуру по именам параметров. Не по порядку.
Понял, спасибо. Как-то подзабыл о output.

Конечно есть еще вариант самому собирать строку запуска процедуры типа:
"exec my_tmp @p2 ="+cstr(10)+", @p1 = " + cstr(5).
Но я стараюсь так не делать, ибо все рекомендуют явно указывать параметры.

Выходит, что нельзя привязаться к именам параметров процедуры?
...
Рейтинг: 0 / 0
29.06.2004, 15:26
    #32581470
Николай МВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача параметров в хранимую процедуру по именам параметров. Не по порядку.
Отвечаю на свой вопрос. Вот здесь я нашел то что надо:
Порядок параметров хранимой процедуры

А вот что мне помогло.
После строчки:
Код: plaintext
Set cmd = CreateObject("ADODB.Command")
Я добавил:
Код: plaintext
cmd.NamedParameters = True

Заработало!!! :)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Передача параметров в хранимую процедуру по именам параметров. Не по порядку. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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