sql >> データベース >  >> RDS >> Sqlserver

SQL Server 2008 で動的パラメーターをストアド プロシージャに渡す

    ラッパー プロシージャのポイントが何なのか (監査? デバッグ?) が本当に明確ではなく、非常に厄介な解決策のように思えます。これを行う理由を説明すると、誰かがまったく別の、うまくいけばより良い解決策を持っているかもしれません.

    あなたの提案の最大の問題は、パラメーターを文字列としてのみ渡すことができることです。つまり、 動的 SQL .呼び出し元のコードから正しく型指定されたパラメーターを渡して、各プロシージャを直接呼び出す方がはるかに優れています。

    そうは言っても、本当にやりたい場合は、次のようにすることができます:

    create proc dbo.ExecuteProcedure
        @ProcedureName sysname,
        @Parameters nvarchar(max),
        @Debug bit = 0x0,
        @Execute bit = 0x1
    as
    set nocount on
    begin
    
    declare @sql nvarchar(max)
    set @sql = 'exec ' + quotename(@ProcedureName) + ' ' + @Parameters
    
    if @Debug = 0x1 print @sql
    
    if @Execute = 0x1 exec(@sql)
    
    end
    go
    
    exec dbo.ExecuteProcedure 'dbo.SomeProc', '@p1 = 1, @p2 = ''themhz''s proc''', 0x1, 0x0
    

    sp_executesql<も参照してください。 /a> 、これはほぼ正確にあなたが望むことを行いますが、すべてのパラメーターデータ型も必要であり、あなたのシナリオでは不可能だと言います.



    1. MySQLのINSERTとUPDATEの違いは何ですか?

    2. 主キーにignore_dup_keyをオンに設定できますか?

    3. asp.netを使用してmySQLデータベースに接続する

    4. 致命的なエラーロックファイルpostmaster.pidはすでに存在します