SQL Server: Дополнительная переменная в хранимой процедуре

Согласно Виртуальный Парень ПК сообщение в блоге" Обнаружение виртуальные машины Microsoft ", можно использовать WMI для проверки производителя материнской платы. В PowerShell:

 (gwmi Win32_BaseBoard).Manufacturer -eq "Microsoft Corporation"

5
задан OMG Ponies 5 October 2009 в 14:48
поделиться

5 ответов

Указание значения по умолчанию для параметра хранимой процедуры сделает его необязательным.

РЕДАКТИРОВАТЬ:

CREATE PROC [EDURE] [owner. ]
имя_процедуры [; номер]
[{@parameter data_type}
[РАЗЛИЧНЫЕ] [= по умолчанию] [ВЫВОД]
] [, ... n]

default

Значение параметра по умолчанию. Если задано значение по умолчанию, процедура может быть выполнен без указания значение для этого параметра. По умолчанию должно быть константой или может иметь значение NULL. Он может включать подстановочные знаки (%, _, [] и [^]), если процедура использует параметр с ключевым словом LIKE.

См. - http://msdn.microsoft.com/en-us/library/aa258259%28SQL. 80% 29.aspx

7
ответ дан 18 December 2019 в 06:35
поделиться

Когда вы создаете хранимую процедуру, создайте ее следующим образом

Create Proc MyProc
@Param1 VarChar (20),
@Param2 VarChar (20) = NULL
AS

-- Your code here

GO

Param1 является обязательным

Param2 необязательным

14
ответ дан 18 December 2019 в 06:35
поделиться

Да. Перечислите «необязательные» параметры в конце списка параметров и присвойте им значение по умолчанию (обычно NULL):

CREATE PROCEDURE MyProcedure
    @param1 int,
    @param2 varchar(200),
    @thing_id int = NULL
AS

    If @thing_id IS NULL Begin
       /* ... */
    End

END
3
ответ дан 18 December 2019 в 06:35
поделиться

Если не считать удовольствия от SQL-инъекций, которое принесет код, да, вы можете. Вы можете установить значение по умолчанию для параметров

CREATE PROCEDURE DoStuff @param1 varchar(20) = null

Затем внутри хранимой процедуры

IF @param1 IS NOT NULL
BEGIN
    ... Do stuff
END

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

0
ответ дан 18 December 2019 в 06:35
поделиться
CREATE PROCEDURE SQL_INJECTION(
@MandatoryA int,
@MandatoryB varchar(50),
@MandatoryC datetime,
@OptionalA varchar(50) = NULL
)
AS

-- PUT YOUR DYNAMIC SQL HERE

GO

Для вызова

EXEC dbo.SQL_INJECTION @MandatoryA = 1, @MandatoryB = 'test', @MandatoryC = '2009-10-05', @OptionalA = DEFAULT

Примечание 1: динамический SQL = SQL-инъекция

0
ответ дан 18 December 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: