プロシージャパラメータ
DatabaseMetaData インターフェースを使用して、ストアドプロシージャ情報を取得できます。getProcedureColumns メソッドは、ストアドプロシージャパラメータの説明を返します。 結果は、ストアドプロシージャ名に基づいて制限できます。
次のコード例は、CreateTableSchema ストアドプロシージャのパラメータに関する情報を出力します。
String connectionString = "jdbc:saperp:Host=sap.mydomain.com;User=EXT90033;Password=xxx;Client=800;System Number=09;ConnectionType=JCo;"; Connection conn = DriverManager.getConnection(connectionString); DatabaseMetaData meta = conn.getMetaData(); ResultSet rs=meta.getProcedureColumns(null, null, "CreateTableSchema", null); while(rs.next()) { for(int i=1;i<=rs.getMetaData().getColumnCount();i++) { System.out.println(rs.getMetaData().getColumnName(i) +"="+rs.getString(i)); } }getProcedureColumns メソッドは次のカラムを返します。
カラム名 | データ型 | 説明 |
PROCEDURE_CAT | String | プロシージャが属しているカタログ。 |
PROCEDURE_SCHEM | String | プロシージャが属しているスキーマ。 |
PROCEDURE_NAME | String | ストアドプロシージャの名前。 |
COLUMN_NAME | String | プロシージャカラムの名前。 |
COLUMN_TYPE | String | プロシージャカラムの種類。DatabaseMetaData の定数procedureColumnIn (1)、procedureColumnInOut (2)、procedureColumnResult (3)、procedureColumnOut (4)、およびprocedureColumnReturn (5) によって定義されます。 |
DATA_TYPE | int | java.sql.Types で定義されているデータ型名。 |
TYPE_NAME | String | ドライバー定義のデータ型名。 |
PRECISION | int | 数値データに許可される桁数。 |
LENGTH | int | 文字データの場合は、許可される文字数。数値データに許可される桁数。 |
SCALE | short | 数値データの小数点以下の桁数。 |
RADIX | short | 基数。 |
NULLABLE | short | パラメータに、次のDatabaseMetaData 定数で定義されているnull を含めることができるかどうか:parameterNoNulls (0)、parameterNullable (1)、およびparameterNullableUnknown (2)。 |
REMARKS | String | パラメータの説明。 |
COLUMN_DEF | String | パラメータのデフォルト値。 |
SQL_DATA_TYPE | int | 仕様で予約されています。 |
SQL_DATETIME_SUB | int | 仕様で予約されています。 |
CHAR_OCTET_LENGTH | int | バイナリベースおよび文字ベースのカラムの最大長。その他のデータ型ではNull。 |
ORDINAL_POSITION | int | 出力パラメータのインデックス。 |
IS_NULLABLE | String | カラムにnull を含めることができるかどうか。(YES またはNO)。 |
SPECIFIC_NAME | String | スキーマ内でストアドプロシージャを一意に識別する名前。 |