2013-11-07 4 views
0

Ниже приведен фрагмент, который обновляет имя клиента с помощью SQL * Plus. Он работает нормально для всех клиентов, кроме клиентов, чье имя содержит символ «&», хотя имя «включено».& in SQL * Plus UPDATE

sqlplus -s $user/[email protected]$db << EOF 
UPDATE order_address SET name = '$customer_name' WHERE address_type = '2' AND order_number = '$order_number'; 
COMMIT; 
EXIT; 
EOF 

Что должно быть сделано так, что он работает даже на клиентов, чье имя содержит «&»?

Обновление: Возможно, он действительно работает, но там, где есть «&», он ставит «COMMIT;» поэтому имя отображается как «COMMIT; B 'вместо' A & B '.

+1

Многие ответы здесь: http://stackoverflow.com/questions/118190/how-do-i-ignore-ampersands-in-a-sql-script-running-from-sql-plus?rq= 1 –

ответ

2

Можете ли вы попробовать с "SET DEFINE OFF"?

SQL> SET SERVEROUTPUT ON 
SQL> SET DEFINE OFF 
SQL> BEGIN 
    2 DBMS_OUTPUT.PUT_LINE('A&B'); 
    3 END; 
    4/
A&B 

PL/SQL procedure successfully completed.