SQL Server 2008でストアドプロシージャのパラメータの値を制限する方法はありますか?それはvarcharです。例えば。私はそれが「生産」、「開発」、または「品質保証」だけであることを望みます。私は誰かが 'Prod'、 'Dev'、 'UAT'など何かを渡すとエラーになることを願っています。SQL Serverでストアドプロシージャのパラメータの値を制限する
答えて
IF ... ELSEステートメントを使用できます。
CREATE PROC SomeProc
@par VARCHAR(50)
AS
BEGIN
IF @par NOT IN ('Production', 'Development', 'QA')
RAISERROR(N'Your Message',16,1)
-- MORE CODE HERE
END
あなたは可能性がある限り、有効な値をルックアップするために、テーブルを使用してソリューションを提供します。
IF
ブロックとRAISEERROR
キーワードの組み合わせを使用すると、必要なものを達成できるはずです。
ただし、この制限はアプリケーションとストアドプロシージャのどちらにも属しているようです。
最後の行に同意しないでください。プロシージャが特定のリストからパラメータを指定して呼び出されることが期待される場合、デフォルトを想定していたり、静かに失敗したりするのではなく、何らかのナンセンスが渡された場合にエラーを発生させることは完全に合理的です。 –
私はそれが公正な点だと思っています。私はSPロジックをCRUDだけに制限し、アプリケーションで入力の検証を処理させます。結局のところ、アプリケーションはソース管理、バージョン管理、コードレビューなどの影響を受け、SPロジックはしばしば気付かずにデバッグが困難になることがあります。 – RobJohnson
@MartinSmith - ストアドプロシージャがコマンドラインや管理者がManagement Studioのようなものを使用して実行されている場合を除き、このロジックがストアドプロシージャに必要な理由はわかりません。あなたが記述したものは、ビジネスロジックを取り除くことができるアプリケーションでは非常に簡単に実装できます。 –
私がこれを行うと考えることができる唯一の方法は、手動で値を自分で確認することです。大まかな例として、
CREATE PROCEDURE [dbo].[MyProcedure]
@value varchar(32)
AS
BEGIN
declare @isAllowed bit = 0
if @value in ('Hello', 'World')
set @isAllowed = 1
if @isAllowed begin
-- Do work here
end
else begin
-- Send error here
end
END
- 1. SQL Serverストアドプロシージャ - パラメータ
- 2. 読むSQL Serverのストアドプロシージャのパラメータとストアドプロシージャ
- 3. CでSQL Serverストアドプロシージャの数値パラメータを使用する方法#
- 4. SQL Serverストアドプロシージャのパラメータを使用する
- 5. SQL Server Express ...ストアドプロシージャ「Nullパラメータ」エラー
- 6. SQL Serverストアドプロシージャのパラメータ - 異なる種類
- 7. SQL Serverストアドプロシージャの戻り値
- 8. SQL Serverストアドプロシージャの戻り値
- 9. Microsoft SQL Serverのサブクエリを制限する
- 10. SQL Serverリンクサーバーのリソース制限
- 11. 単一のパラメータSQL Serverのストアドプロシージャ
- 12. SQL Server 2008のストアドプロシージャの既定のパラメータ値
- 13. パラメータ付きストアドプロシージャの実行SQL Server 2005
- 14. データ選択時のSQL Serverストアドプロシージャdatetimeパラメータ
- 15. SQL Serverのストアドプロシージャでdatetimeオプションのパラメータを設定するには?
- 16. SQL Serverストアドプロシージャのキャプチャ戻り値T-SQL
- 17. SQL Serverメモリ制限ソリューション
- 18. SQL Server 2012 MDS - 制限
- 19. SQL Server Express 4GB制限
- 20. SQL Serverストアドプロシージャの出力パラメータとResultSet値の両方を取得する
- 21. SQL Serverのストアドプロシージャ
- 22. SQL Serverのストアドプロシージャ
- 23. SQL Serverのストアドプロシージャ
- 24. TADOStoredProcとSQL Serverストアドプロシージャのデフォルト値を
- 25. SQL Server 2005の.NETストアドプロシージャのデフォルトパラメータ値/オプションパラメータ
- 26. SQL Serverの行数、行数の制限
- 27. SQLユーザーをストアドプロシージャのみに制限できますか?
- 28. SQL Server 2008 R2 Express 10GBファイルサイズの制限
- 29. SQL Server Express:Reporting Services ..チャートの制限?
- 30. SQL Serverストアドプロシージャのドキュメント
ストアドプロシージャ自体に検証ロジックを追加しようとしましたか?例えば。パラメータの値を確認し、条件に合わない場合はRAISE ERRORを使用します。 – RobJohnson