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

PL/SQLのINSERT文がOracleデータベースで失敗する

    PL / SQLでは、INSERTを記述できます。 直接声明。

    DECLARE
      tablevalue      varchar2(200);
    BEGIN
      tablevalue := 'Hello World!';
    
      INSERT   INTO tablename
             VALUES (tablevalue);
    END;
    

    DBMS_SQL.EXECUTEの方法ではないため、ステートメントは失敗します 動作します。ドキュメントと例を確認してください: http:/ /docs.oracle.com/cd/B28359_01/appdev.111/b28419/d_sql.htm#BABBFFFJ

    リファレンスドキュメントに記載されている例によると、次のようにする必要があります(最初にステートメントを準備し、次に変数をバインドしてから実行します)。

    CREATE OR REPLACE PROCEDURE demo(tablevalue IN varchar2) AS
        cursor_name INTEGER;
        rows_processed INTEGER;
    BEGIN
        cursor_name := dbms_sql.open_cursor;
        DBMS_SQL.PARSE(cursor_name, 'INSERT INTO tablename VALUES(:x)',
                       DBMS_SQL.NATIVE);
        DBMS_SQL.BIND_VARIABLE(cursor_name, ':x', tablevalue);
        rows_processed := DBMS_SQL.EXECUTE(cursor_name);
        DBMS_SQL.CLOSE_CURSOR(cursor_name);
    EXCEPTION
    WHEN OTHERS THEN
        DBMS_SQL.CLOSE_CURSOR(cursor_name);
        raise;
    END;
    

    あなたはそれをこのように使用します

     exec demo('something');
    

    お役に立てば幸いです




    1. mySQL replace()を使用して複数のレコードの文字列を置き換えるにはどうすればよいですか?

    2. カータイムを変更する方法は?

    3. jdbcからMYSQLへのエラー:jdbc:mysql:// localhost:3306 / test?user ='root'&password=''に適したドライバーが見つかりません

    4. R12.2で管理サーバーを追加する方法