#sql #oracle #plsql #sql-update
#sql #Oracle #plsql #sql-обновление
Вопрос:
Я пытаюсь выполнить запрос, который выглядит следующим образом
обновление L2l_Lov_Master set QUERY_STRING = ‘com.jmr.profitto.los.app.retail.model.L2LLdmLeadinformation entity ГДЕ entity.status В (‘НОВЫЙ’,’ОТКЛОНЕНО’,’ОТКЛОНЕН_В_КЛИЕНТЕ’)’ где LOV_ID = ‘customerLov-leadcode’;
Я использую oracle DB и получаю «ORA 00933: команда SQL не завершилась должным образом». Нужно знать, где что-то пошло не так
Ответ №1:
Насколько я могу судить, ваша проблема связана с кавычками -> чтобы быть более явным, у вас возникает проблема, когда IN
начинается ваше предложение, потому что вы закрываете свою первую цитату из строки запроса
query_string = 'com.jmr.profitto.los.app.retail.model.L2LLdmLeadinformation entity WHERE entity.status IN ('
Я думаю, вам нужно инкапсулировать кавычки из IN
предложения, чтобы они игнорировались первым запросом.
UPDATE l2l_lov_master
SET
query_string = 'com.jmr.profitto.los.app.retail.model.L2LLdmLeadinformation entity WHERE entity.status IN (''
new '','' rejected '','' rejected_by_customer '')'
WHERE
lov_id = 'customerLov-leadcode';
Комментарии:
1. рад помочь. Так же, как информация, при создании инструкции могут быть некоторые различия в тексте, поэтому убедитесь, что вы исправили их перед использованием кода в вашем реальном проекте. (в предложении IN я использовал нижний регистр и добавил несколько пробелов)
Ответ №2:
Можно легко заблудиться из-за слишком большого количества одинарных кавычек. Поэтому используйте механизм q-кавычек, как в следующем примере:
SQL> CREATE TABLE l2l_lov_master
2 AS
3 SELECT 'customerLov-leadcode' lov_id, LPAD ('x', 500, 'x') query_string
4 FROM DUAL;
Table created.
См. Строку # 3 и конец строки # 4, т.е. q'[blabla]'
.
SQL> UPDATE L2l_Lov_Master
2 SET QUERY_STRING =
3 q'[com.jmr.profitto.los.app.retail.model.L2LLdmLeadinformation entity
4 WHERE entity.status IN ('NEW','REJECTED','REJECTED_BY_CUSTOMER')]'
5 WHERE LOV_ID = 'customerLov-leadcode';
1 row updated.
SQL> SELECT * FROM l2l_lov_master;
LOV_ID
--------------------
QUERY_STRING
--------------------------------------------------------------------------------
customerLov-leadcode
com.jmr.profitto.los.app.retail.model.L2LLdmLeadinformation entity
WHERE entity.status IN ('NEW','REJECTED','REJECTED_BY_CUSTOMER')
SQL>