Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Передача в ХП параметра NULL / 11 сообщений из 11, страница 1 из 1
05.11.2003, 08:06
    #32315534
ayv
ayv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в ХП параметра NULL
Как передать в х/процедуру параметра, который может иметь значение
NULL?
Допустим нужно найти клиента по фамилии, имени, отчеству
Имя и отчество может отсутствовать
Делать 3 ХП не хочется
В ХП использую конструкции IF...ELSE
...
Рейтинг: 0 / 0
05.11.2003, 08:52
    #32315557
Shkurenko Alexander
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в ХП параметра NULL
...
Рейтинг: 0 / 0
05.11.2003, 09:15
    #32315585
ayv
ayv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в ХП параметра NULL
Спасибо, почитал, только у меня чуть другая проблема
Есть форма, где пользователь формирует критерии поиска
1. Фирма AKA p1
2. Фамилия рук. p2
3. Имя рук p3
4. отчество рук p4
Всго четыре параметра
Далее
Forms!MyForma.RecordSource="EXEC MySP " & p1 & "," & p2 & "," & p3 "," & p4

Хранимка сама разберется, что делать с NULL параметрами
Ошибка вылетает в модуле, если хотя бы один из параметров не заполнен
"Недопустимая инструкция SQL. Проверьте фильтр для сервера..."
Когда все заполнено, все ОК

Когда ручками запускаешь ХП, любые комбинации работают

Жаль будет, если этого нельзя сделать
ХП на 2 листах, день ваял
...
Рейтинг: 0 / 0
05.11.2003, 09:26
    #32315594
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в ХП параметра NULL
А ты погляди что у тебя в итоге выходит.
Сделай Debug.Print Forms!MyForma.RecordSource и увидишь что-нить типа
EXEC MySP 1, 2 , , 4

Sql - это не VB, параметры пропускать нельзя
...
Рейтинг: 0 / 0
05.11.2003, 09:37
    #32315611
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в ХП параметра NULL
Так что вызывать надо примерно так:
Forms!MyForma.RecordSource="EXEC MySP " & Nz(p1,"Null") & "," и т.д.

Кстати, сильно подозреваю, что фамилия, имя и отчество - строки. Тогда кавычек сильно не хватает.
...
Рейтинг: 0 / 0
05.11.2003, 09:45
    #32315623
ayv
ayv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в ХП параметра NULL
Видимо так оно и есть
"Видимо" потому, что
DEBUg стоит после вызова ХП, а программа валится на вызове
В случае, если все параметры есть
Debug все нормально выдает

Т.е. как итог
В ХП не возможно передать параметр со значением NULL, даже если в самой ХП
обработка NULL параметров предусмотрена?????
Т.е. всю логику надо переносить в VB, написать несколько ХП под различные
комбинации параметров???
...
Рейтинг: 0 / 0
05.11.2003, 09:47
    #32315629
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в ХП параметра NULL
Не Nz(p1,"Null") делать, а
Nz(p1,"DEFAULT")
...
Рейтинг: 0 / 0
05.11.2003, 09:47
    #32315630
ayv
ayv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в ХП параметра NULL
|Так что вызывать надо примерно так:
|Forms!MyForma.RecordSource="EXEC MySP " & Nz(p1,"Null") & "," и т.д.
Сейчас попробую
...
Рейтинг: 0 / 0
05.11.2003, 09:49
    #32315634
ayv
ayv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в ХП параметра NULL
DEFAULT
Извиняюсь, это что?
...
Рейтинг: 0 / 0
05.11.2003, 10:04
    #32315655
Senin Viktor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в ХП параметра NULL
>DEFAULT Извиняюсь, это что?

mk:@MSITStore:C:\Program%20Files\Microsoft%20SQL%20Server\80\Tools\Books\tsqlref.chm::/ts_ea-ez_05ro.htm

Код: plaintext
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.
G. Use EXECUTE with DEFAULT
This example creates a stored procedure with default values for the first and third parameters. When the procedure is run, these defaults are inserted for the first and third parameters if no value is passed in the call or if the default is specified. Note the various ways the DEFAULT keyword can be used. 

USE pubs
IF EXISTS (SELECT name FROM sysobjects 
      WHERE name = 'proc_calculate_taxes' AND type = 'P')
   DROP PROCEDURE proc_calculate_taxes
GO
 -- Create the stored procedure.
 
CREATE PROCEDURE proc_calculate_taxes (@p1 smallint =  42 , @p2 char( 1 ), 
      @p3 varchar( 8 ) = 'CAR')
    AS 
   SELECT * 
   FROM mytable

The proc_calculate_taxes stored procedure can be executed in many combinations: 

EXECUTE proc_calculate_taxes @p2 = 'A'
EXECUTE proc_calculate_taxes  69 , 'B'
EXECUTE proc_calculate_taxes  69 , 'C', 'House'
EXECUTE proc_calculate_taxes @p1 = DEFAULT, @p2 = 'D'
EXECUTE proc_calculate_taxes DEFAULT, @p3 = 'Local', @p2 = 'E'
EXECUTE proc_calculate_taxes  69 , 'F', @p3 = DEFAULT
EXECUTE proc_calculate_taxes  95 , 'G', DEFAULT
EXECUTE proc_calculate_taxes DEFAULT, 'H', DEFAULT
EXECUTE proc_calculate_taxes DEFAULT, 'I', @p3 = DEFAULT
...
Рейтинг: 0 / 0
05.11.2003, 12:18
    #32315929
Хам трамвайный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передача в ХП параметра NULL
у меня null
передается через
входные апраметры
а в самой ХП
делаю так
(поиск по null или по
любоиу символу)

where ... (ISNULL(dbo.[Возврат товара].[Серийный номер], N'') LIKE N'%' + ISNULL(@SerNomer, N'') + N'%')...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Передача в ХП параметра NULL / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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