Mam skrypt SQL, który tworzy pakiet z komentarzem zawierającym znak ampersand (&). Kiedy uruchamiam skrypt z SQL Plus, pojawia się monit o wprowadzenie wartości zastępczej dla ciągu zaczynającego się od &. Jak wyłączyć tę funkcję, aby SQL Plus ignorował znak ampersand?
105
Jeśli czasami używasz zmiennych zastępujących, możesz nie chcieć wyłączać definicji. W takich przypadkach można przekonwertować ampersand z jego numerycznego odpowiednika, jak w,
|| Chr(38) ||
lub dołączyć go jako pojedynczy znak, jak w|| '&' ||
.źródło
Rozwiązałem za pomocą poniższego kodu:
i umieść \ obok & po lewej stronie
'value_\&_intert'
Att
źródło
comment on column tablename.columnname is 'war ' || chr(38) || ' peace'
ale dawało mi ono błądORA-01780: string literal required
.Możesz ustawić znak specjalny, który jest poszukiwany po wykonaniu skryptu, na inną wartość za pomocą
SET DEFINE <1_CHARACTER>
Domyślnie sama funkcja DEFINE jest włączona i ustawiona na &
Można go wyłączyć - jak już wspomniano - ale można też tego uniknąć, ustawiając go na inną wartość. Bądź bardzo świadomy tego, na jaki znak go ustawiłeś. W poniższym przykładzie wybrałem znak #, ale ten wybór jest tylko przykładem.
źródło
set define off <- To najlepsze rozwiązanie, jakie znalazłem
Próbowałem też ...
set define}
Udało mi się wstawić kilka rekordów zawierających ampersand znaki „&”, ale nie mogę użyć znaku „}” w tekście, więc zdecydowałem się użyć „set define off” i wszystko działa tak, jak powinno.
źródło
Zgodnie z tym fajnym FAQ istnieje kilka rozwiązań.
Możesz również wstawić znak „ampersand” za pomocą znaku ukośnika odwrotnego,
\
jeśli możesz zmodyfikować komentarz.źródło
set escape on
Miałem instrukcję CASE z kolumną WHEN = „coś tekstu i więcej tekstu” WTEDY ....
Zastąpiłem go kolumną KIEDY = 'coś_tekst' || CHR (38) || „więcej tekstu” WTEDY ...
możesz również użyć GDY kolumna LIKE 'someext _ more text' THEN ...
(_ to symbol wieloznaczny dla pojedynczego znaku)
źródło