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. CでSQL Serverストアドプロシージャの数値パラメータを使用する方法#
- 2. SQL Server Express ...ストアドプロシージャ「Nullパラメータ」エラー
- 3. SQL Serverストアドプロシージャの戻り値
- 4. 単一のパラメータSQL Serverのストアドプロシージャ
- 5. SQL Server 2008のストアドプロシージャの既定のパラメータ値
- 6. データ選択時のSQL Serverストアドプロシージャdatetimeパラメータ
- 7. SQL Serverストアドプロシージャのキャプチャ戻り値T-SQL
- 8. SQL Serverメモリ制限ソリューション
- 9. SQL Server 2012 MDS - 制限
- 10. SQL Server Express 4GB制限
- 11. SQL Serverのストアドプロシージャ
- 12. SQL Serverのストアドプロシージャ
- 13. SQL Serverのストアドプロシージャ
- 14. SQL Server 2005の.NETストアドプロシージャのデフォルトパラメータ値/オプションパラメータ
- 15. SQL Server Express:Reporting Services ..チャートの制限?
- 16. Delphiを使用してSQL Serverストアドプロシージャのパラメータ名を渡す
- 17. SQL Serverのトリガ、ストアドプロシージャ
- 18. ストアドプロシージャ(SQL Server 2000の)
- 19. SQL Serverストアドプロシージャのドキュメント
- 20. は、境界値で厳密にパラメータ値を制限する
- 21. XMLパラメータをSQL Serverストアドプロシージャに渡す際の問題
- 22. テーブル値パラメータ、SQL Server 2008
- 23. OpenQueryでパラメータ化されたストアドプロシージャを呼び出す - SQL Server 2008
- 24. ストアドプロシージャのさまざまなパラメータで検索SQL Server
- 25. デフォルト値をテーブル値付きパラメータ - SQL Server
- 26. SQL Serverストアドプロシージャ
- 27. インラインテーブル値関数とストアドプロシージャ(SQL Server)
- 28. SQL Serverの列を可能な値のリストに制限します。
- 29. SQL Serverは、選択したストアドプロシージャのみに限定します
- 30. SQL Server 2008でストアドプロシージャをデバッグ
ストアドプロシージャ自体に検証ロジックを追加しようとしましたか?例えば。パラメータの値を確認し、条件に合わない場合はRAISE ERRORを使用します。 – RobJohnson