У меня есть хранимая процедура в MSSQL 2005 Server SQLCLR. Можно ли определить для него необязательный аргумент? Если да, то как?Использовать необязательные аргументы в SQLCLR
ответ
Самое быстрое, если не самое аккуратное, решение, которое приходит на ум, - использовать хранимую процедуру «прокладки» со значениями по умолчанию для дополнительных параметров, которые вызывают внутреннюю хранимую процедуру с этими значениями по умолчанию, так же, как вы используете перегрузку метода для ' необязательные "параметры в C# 3 и ранее.
Вы можете передать его в нуль, а затем сделать что-то вроде этого:
create proc sp_find_person
@fname varchar(30)
@lname varchar(60)
as
begin
select * from person a
where (a.fname = @fname or @fname is null)
and (a.lname = @lname or @lname is null);
end
go
Passing оба параметра в нуль будет возвращать все строки от человека.
Передача @fname со значением и @lname null возвращает всех лиц с этим @fname.
Передача @lname со значением и @fname null возвращает всех лиц с этим именем.
Передача обоих значений с ненулевым значением позволит найти всех лиц с указанными именами и именами.
Есть ли что-то не так, просто передавая в Nulls значения, которые вы хотите использовать по умолчанию?
Предоставлено, что это может не работать в любой ситуации.
Иногда вам может потребоваться узнать, действительно ли фактическое значение Null, и, следовательно, избегать использования значения по умолчанию.
Если это так, то я бы посоветовал добавить дополнительный параметр «Default».
[Microsoft.SqlServer.Server.SqlProcedure]
public static void MySproc(SqlInt32 pID, SqlBoolean UseDefault_pID)
{
pID = (UseDefault_pID == SqlBoolean.True && pID == SqlInt32.Null)
? SomeDefaultPIDValue : pID;
}
Это экономит на том, чтобы написать дополнительные «обертка» sprocs принимать в необязательных параметров со значениями по умолчанию, которые затем называют вашу CLR sproc.
Для использования по умолчанию-Value, когда Null проходить в: UseDefault_pID = 1
Чтобы сохранить фактическое значение при Null передать: UseDefault_pID = 0
Ничего плохого, я думаю. Увидев, что это было 3,5 года назад, я не помню оригинального дела. Я могу только предположить, что это была процедура с несколькими необязательными параметрами, поэтому код проверки по умолчанию может затянуться. –
- 1. Как использовать необязательные и необязательные аргументы?
- 2. Как использовать необязательные аргументы в defprotocol?
- 3. необязательные аргументы в Haskell
- 4. Необязательные аргументы в defgeneric?
- 5. BASH getopts необязательные аргументы
- 6. MATLAB ActiveX необязательные аргументы
- 7. Как использовать аргументы по умолчанию и необязательные?
- 8. subprocess.Popen необязательные аргументы
- 9. Необязательные аргументы условного модуля
- 10. Необязательные аргументы командной строки
- 11. Необязательные аргументы командной строки
- 12. Необязательные аргументы без? идентификатор
- 13. Подчеркивание игнорирует необязательные аргументы
- 14. Необязательные аргументы C++/CLI
- 15. PhpDocumentor необязательные аргументы
- 16. PHP необязательные аргументы
- 17. Необязательные аргументы в разделе WHERE
- 18. Необязательные именованные аргументы в Mathematica
- 19. Необязательные аргументы аргументов в Swift
- 20. TypeScript и необязательные деструктурированные аргументы
- 21. docopt не допуская необязательные аргументы
- 22. Javascript Функции и необязательные аргументы
- 23. с именем PHP необязательные аргументы?
- 24. getopts необязательный и необязательные аргументы
- 25. np array как необязательные аргументы
- 26. Необязательные входные аргументы функции Matlab
- 27. Фортран 90/95 необязательные аргументы
- 28. Функция запроса мощности необязательные аргументы
- 29. Могу ли я использовать именованные и необязательные аргументы в ironpython
- 30. Как использовать необязательные позиционные аргументы с аргументами nargs = '*' в argparse?
Да, это то, что я делаю сейчас, но Я пытаюсь избежать нескольких процедур хранения для одной и той же вещи. –