Escape the closing quote character when quoting indentifiers
[dbsrgits/SQL-Translator.git] / lib / SQL / Translator / Producer / Oracle.pm
index 46a24a5..34a9be8 100644 (file)
@@ -248,10 +248,9 @@ sub produce {
         $create .= ";\n\n";
         # If wantarray is not set we have to add "/" in this statement
         # DBI->do() needs them omitted
-        # triggers may NOT end with a semicolon
-        $create .= join "/\n\n", @trigger_defs;
-        # for last trigger
-        $create .= "/\n\n";
+        # triggers may NOT end with a semicolon but a "/" instead
+        $create .= "$_/\n\n"
+            for @trigger_defs;
         return $create;
     }
 }
@@ -788,7 +787,9 @@ sub mk_name {
 
 sub quote {
   my ($name, $q) = @_;
-  $q && $name ? "$quote_char$name$quote_char" : $name;
+  return $name unless $q && $name;
+  $name =~ s/\Q$quote_char/$quote_char$quote_char/g;
+  return "$quote_char$name$quote_char";
 }