入力文字列を連結するクエリテキストを構築することは、すべて悪いことです。
1つの理由は、単一引用符のようにクエリを中断する文字や、データベースクエリ構文で定義された文字を削除する必要があることです。 しかし、最も重要な理由はSql Injection Attacksの可能性です。 しかし、エラーの原因としては、where句の前にスペースがないことが考えられます。 この方法でパラメータを使用してテキストをすべて置き換える必要があります。
update_oracle = "update SCHEMA.TABLE set " & _
"ISSUE_ADDED_TO_ALM = '2'," & _
"ISSUE_STATUS = :tmpALMStatus, " & _
"ISSUE_REJECTED_REASON = :tmpALMRejected," & _
"ISSUE_PHASE = :tmpALMCurrent_Phase, " & _
"ISSUE_PRIORITY = :tmpALMPriority," & _
"ISSUE_SYSTEM_IMPACTED = :tmpALMSystemImpacted," & _
"ISSUE_DQ_ANALYST = :tmpALMDQAnalyst, " & _
"ISSUE_COMMENTS = :tmpALMComments," & _
"ISSUE_OWNER_DEPARTMENT = :tmpALMOwnerDepartment, " & _
"ALM_ISSUE_ID = :tmpALM_ID," & _
"DQ_Team = :tmpALM_DQ_Team" & _
" where ISSUE_SUMMARY = :tmpALM_Summary"
Dim or_cmd= New NetOracle.OracleCommand(update_oracle, OracleConn)
or_cmd.Parameters.AddWithValue(":tmpALMStatus",ueio_tmpALM_Status)
or_cmd.Parameters.AddWithValue(":tmpALMRejected" ,ueio_tmpALM_Rejected)
or_cmd.Parameters.AddWithValue(":tmpALMCurrent_Phase",ueio_tmpALM_Current_Phase)
or_cmd.Parameters.AddWithValue(":tmpALMPriority",ueio_tmpALM_Priority)
or_cmd.Parameters.AddWithValue(":tmpALMSystemImpacted" ,ueio_tmpALM_System_Impacted)
or_cmd.Parameters.AddWithValue(":tmpALMDQAnalyst" ,ueio_tmpALM_DQ_Analyst)
or_cmd.Parameters.AddWithValue(":tmpALMComments",ueio_tmpALM_Comments)
or_cmd.Parameters.AddWithValue(":tmpALMOwnerDepartment",ueio_tmpALM_Owner_Department)
or_cmd.Parameters.AddWithValue(":tmpALM_ID",ueio_tmpALM_ID)
or_cmd.Parameters.AddWithValue(":tmpALM_DQ_Team",ueio_tmpALM_DQ_Team)
or_cmd.Parameters.AddWithValue(":tmpALM_Summary",ueio_tmpALM_Summary)
or_cmd.ExecuteNonQuery()
不思議なことに、この質問を解決しましたか? – Steve