0

コンボボックスに入力するすべてのユーザー定義のストアドプロシージャのリストを取得しようとしています。アイデアは、次の列を持つテーブルを手動で作成することでした。

SProc名、入力数、パラメーター1、パラメーター2 .. ..

ユーザーはボタンをクリックすることを意図しており、SProcはそのテーブルからこのすべてのデータを選択し、それを配列にロードしてコンボボックスに入力します。

ユーザーは、コンボボックスからストアドプロシージャ名を選択することを目的としており、必要なパラメータの数が(関連する名前とともに)表示されます。

4

1 に答える 1

1

SOチャットでの議論によると:

SELECT
    sprocs.ROUTINE_NAME,
    parms.PARAMETER_NAME,
    parms.DATA_TYPE
FROM
    INFORMATION_SCHEMA.ROUTINES sprocs
    LEFT OUTER JOIN INFORMATION_SCHEMA.PARAMETERS parms ON parms.SPECIFIC_NAME = sprocs.ROUTINE_NAME
WHERE
    sprocs.ROUTINE_TYPE = 'PROCEDURE'
    --AND PATINDEX('/*<SomeKeyToSearch>*/', sprocs.ROUTINE_DEFINITION) > 0

これにより、すべてのsprocとそのパラメーターおよびデータ型のリストが表示されます。データ型(精度、スケール、最大長など)にも細心の注意を払う必要があることに注意してください。これは、ユーザーが任意のストアドプロシージャを呼び出すために使用されるためです。このテーブル全体をC#アプリケーションで取得したら、必要な基準に基づいてグループ化/並べ替え/制限できます。上記のクエリから特定のsprocのみが返されるようにする場合は、検索可能な何らかのキーを使用して、トップレベルのコメントをsprocに追加するだけです。

幸運を。

于 2012-05-17T17:29:07.703 に答える