例: Java外部SQLプロシージャの作成 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ定義言語 構文規則および例

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/spp1591731285373.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1144
Product Category
Software
Teradata Vantage

次の一連の例で、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