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

SQLが文字列に対して長すぎます

    Oracleを使用しているため、動的SQLの代わりにバインド変数を使用してから、コマンドオブジェクトのパラメータコレクションに値を設定する必要があります。 SQLインジェクションを防ぐだけでなく、クエリをより適切に最適化します。

    また、SQLステートメントのorderby句の前にスペースがないようです。それは簡単にあなたのエラーを引き起こす可能性があります。以下を参照してください-テストされていませんが、アイデアが得られるはずです。

    SQL = "SELECT A.cust_ky, A.incid_id, A.OPEN_TS, A.CLOSE_TS, A.REC_UPD_TS, B.wrkgp_id, A.CURR_AGNT_KY, A.incid_ttl_dn " _
        & "FROM (MAINTBLS.INCID_FAB A INNER JOIN MAINTBLS.DEPTMNT B ON A.curr_wrkgp_ky=B.wrkgp_ky) " _
        & "WHERE B.wrkgp_id= :wrkgp And (A.open_fg = 1 OR A.pend_fg = 1) " _
        & "ORDER BY A.cust_ky, A.curr_agnt_ky ASC"
    
       With cmd
         .ActiveConnection = conn
         .CommandText = SQL
         .CommandType = adCmdText
         .Parameters.Append .CreateParameter(, adVarChar, adParamInput, wrkgp)
       End With
    


    1. PythonマルチスレッドでMySQL接続を処理する方法

    2. SQLでサブストリングを見つける方法(Postgres)

    3. MySQL LIKE%string%は十分に寛容ではありません。他に使用できるものはありますか?

    4. SQL Serverで「datetime2」を「smalldatetime」に変換します(T-SQLの例)