プロシージャにパラメータを渡すときに使用するパラメータの受け渡し表記。
この句は、すべての外部プロシージャで必須です。指定するパラメータ形式は、外部プロシージャのパラメータの受け渡し表記に適合する必要があります。
この時点でパラメータ形式を指定しない場合は、パラメータ形式を外部本体の参照と共に指定できます。
同じCREATE PROCEDUREリクエストまたはREPLACE PROCEDUREリクエストでパラメータ形式を複数回指定することはできません。
- SQL
- 標識変数を使用して引数を渡します。
- TD_GENERAL
- パラメータを使用して引数を渡します。
- JAVA
- すべてのJavaプロシージャで必須です。
例: PARAMETER STYLE SQLを使用したプロシージャの作成
次のCREATE PROCEDUREリクエストは、Teradataプラットフォーム上にGetRegionXSPという名前の外部SQLプロシージャをインストールします。
CREATE PROCEDURE GetRegionXSP (INOUT region VARCHAR(64)) LANGUAGE C NO SQL EXTERNAL NAME 'CS!getregion!xspsrc/getregion.c!F!xsp_getregion' PARAMETER STYLE SQL;
この定義と例: PARAMETER STYLE TD_GENERALを使用したプロシージャの作成で提供されている定義の違いは、PARAMETER STYLE宣言だけです。このプロシージャはパラメータ形式SQLを使用します。
次の抜粋は、パラメータ形式SQLを宣言するCプロシージャ コードの一部を示しています。
/***** C source file name: getregion.c *****/ #define SQL_TEXT Latin_Text #include "sqltypes_td.h" #include <string.h> void xsp_getregion( VARCHAR_LATIN *region, int *region_isnull, char sqlstate[6], SQL_TEXT extname[129], SQL_TEXT specific_name[129], SQL_TEXT error_message[257] ) { … }
例: PARAMETER STYLE TD_GENERALを使用したプロシージャの作成
次のCREATE PROCEDUREリクエストは、Teradataプラットフォーム上にGetRegionXSPという名前の外部SQLプロシージャをインストールします。
CREATE PROCEDURE GetRegionXSP (INOUT region VARCHAR(64)) LANGUAGE C NO SQL EXTERNAL NAME 'CS!getregion!xspsrc/getregion.c!F!xsp_getregion' PARAMETER STYLE TD_GENERAL;
この定義と例: PARAMETER STYLE SQLを使用したプロシージャの作成で提供されている定義の違いは、PARAMETER STYLE宣言だけです。このプロシージャはパラメータ形式TD_GENERALを使用します。
次の抜粋は、パラメータ形式TD_GENERALを宣言するCプロシージャ コードの一部を示しています。
/***** C source file name: getregion.c *****/ #define SQL_TEXT Latin_Text #include "sqltypes_td.h" #include <string.h> void xsp_getregion( VARCHAR_LATIN *region, char sqlstate[6]) { … }
例: Java外部SQLプロシージャの作成
次の一連の例で、CREATE PROCEDUREリクエストおよびそれに関連するさまざまなパラメータ データ型用の関連Java外部プロシージャ コードを示します。
次は、BYTEINTパラメータ データ型の例です。
CREATE PROCEDURE mybyteint (IN b BYTEINT OUT c BYTEINT) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'User_jar:UnitTest.mybyteint'; public static void mybyteint( byte a, byte[] Result) throws SQLException
次は、SMALLINTパラメータ データ型の例です。
CREATE PROCEDURE mysmallint (IN b smallint, INOUT c smallint ) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'newint_jar:newint.mysmallint'; public static void mysmallint( short a, short[] Result ) throws SQLException
次は、INTEGERパラメータ データ型の例です。
CREATE PROCEDURE myint (IN b INTEGER, OUT c INTEGER ) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'user_jar:UnitTest.myint'; public static void myint(int i, int[] retval) throws SQLException
次は、DECIMALまたはNUMERICパラメータ データ型の例です。
CREATE PROCEDURE mydecs (IN c DECIMAL(8,2), OUT d DECIMAL(8,2)) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'user_jar:UnitTest.mydec'; public static void mydecs(BigDecimal c, BigDecimal[] d) throws SQLException
次は、FLOATまたはREALパラメータ データ型の例です。
CREATE PROCEDURE myfloat (IN i FLOAT, OUT j FLOAT ) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'user_jar:UnitTest.myfloat'; public static void myfloat( Double c, Double[] Result) throws SQLException
次は、DATEパラメータ データ型の例です。
CREATE PROCEDURE mydatediagret (IN d DATE, OUT o DATE ) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'user_jar:UnitTest.mydatediagret'; public static void mydatediagret( java.sql.Date date, java.sql.Date[] Result) throws SQLException
次は、TIME WITH TIME ZONEパラメータ データ型の例です。
CREATE PROCEDURE mytimezdiagret (IN t TIME WITH TIME ZONE, OUT d TIME WITH TIME ZONE ) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'user_jar:UnitTest.mytimezdiagret'; public static void mytimezdiagret( java.sql.Time time, java.sql.Time[] Result) throws SQLException
Java仮想マシンの実装では、うるう秒がサポートされていないため、SECONDフィールドの最大値は61.999999ではなく、59.999999です。
次は、TIMESTAMP WITH TIME ZONEパラメータ データ型の例です。
CREATE PROCEDURE mytszdiagret (IN t TIMESTAMP WITH TIME ZONE, OUT d TIMESTAMP WITH TIME ZONE ) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'user_jar:UnitTest.mytszdiagret'; public static void mytszdiagret ( java.sql.Timestamp p1, java.sql.Timestamp[] result) throws SQLException
Java仮想マシンの実装では、うるう秒がサポートされていないため、SECONDフィールドの最大値は61.999999ではなく、59.999999です。
次は、INTERVAL YEARパラメータ データ型の例です。
CREATE PROCEDURE intcpy (IN parameter_1 INTERVAL YEAR, OUT t INTERVAL YEAR ) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'user_jar:UnitTest.intcpy'; public static void intcpy( String param_1, String[] result ) throws SQLException
次は、CHARACTERまたはVARCHARパラメータ データ型の例です。
CREATE PROCEDURE strcpy (IN parameter_1 VARCHAR(15), OUT t VARCHAR(15) ) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'user_jar:UnitTest.strcpy'; public static void strcpy( String param_1, String[] result ) throws SQLException
次は、CLOBパラメータ データ型の例です。
CREATE PROCEDURE myclobdiagret2 (IN b CLOB) LANGUAGE JAVA MODIFIES SQL DATA PARAMETER STYLE JAVA EXTERNAL NAME 'user_jar:UnitTest.myclobdiagret2'; public static void myclobdiagret2( java.sql.Clob data) throws SQLException { Connection conn = DriverManager.getConnection("jdbc:default:connection"); PreparedStatement p = conn.prepareStatement("ins into tab2 values(1,?)"); p.setClob(1, data); p.executeUpdate(); }
次は、VARBYTEパラメータ データ型の例です。
CREATE PROCEDURE mybvdiagret (IN c varbyte(30), OUT d varbyte(30)) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'user_jar:UnitTest.mybvdiagret'; public static void mybvdiagret( byte[] data, byte[][] Result ) throws SQLException
次は、BLOBパラメータ データ型の例です。
CREATE PROCEDURE myblobdiagret (IN b blob, OUT c blob) LANGUAGE JAVA NO SQL PARAMETER STYLE JAVA EXTERNAL NAME 'user_jar:UnitTest.myblobdiagret'; public static void myblobdiagret( java.sql.Blob data, java.sql.Blob[] Result) throws SQLException