在PL/SQL中,字符串單引號需要進行轉義,使得PL/SQL引擎知道你要表示一個單引號沒有結束串的存在。如果你想使用一個變量sql_stmt
,你想也需要分配從EXECUTE IMMEDIATE
調用單獨的步驟中值變量。
這將工作(注意,這是兩個連續的單引號,而不是單一的雙引號字符)
DECLARE
sql_stmt VARCHAR2(200);
BEGIN
sql_stmt := 'update dos_visits set visit_type = ''IMV'' where visit_type = ''SMV''';
EXECUTE IMMEDIATE sql_stmt;
END;
似乎沒有,然而,以任何理由在這裏使用動態SQL。它通常會更有意義使用靜態SQL
BEGIN
update dos_visits
set visit_type = 'IMV'
where visit_type = 'SMV';
END;
如果你要使用動態SQL出於某種原因,你可能會想使用綁定變量在查詢中,除非這些visit_type
值真的是硬編碼。
DECLARE
sql_stmt VARCHAR2(200);
BEGIN
sql_stmt := 'update dos_visits set visit_type = :1 where visit_type = :2';
EXECUTE IMMEDIATE sql_stmt
USING 'IMV', 'SMV';
END;
變「SMV」到「SMV」,你應該通過 – Satya
@Satya,那是有點不清楚和犯規手柄'IMV',壽其正確答案。只需將其作爲答案發布即可。 – paqogomez