Error: pls-00103 encountered the symbol "<"

Error: pls-00103 encountered the symbol "<"

我在 Oracle Apex 中的过程代码有错误。

PLS-00103 encountered the symbol "<"

我认为这是在说它无法识别 Google 地图的 JavaScript,但我不确定。我正在尝试在 oracle apex 中创建一个由 PL/SQL 调用的过程,让用户使用可拖动标记并找到地理编码。

这是我的代码:

create or replace procedure "SHOW_LOCATION"(
   map_div IN VARCHAR2 DEFAULT 'map-canvas',
   issue_street_address IN VARCHAR2,
   issue_post_code IN VARCHAR2,
   city IN VARCHAR2,
   lat_item IN VARCHAR2,
  long_item IN VARCHAR2)
is
   a_map VARCHAR2 (32000);
begin
   a_map :=

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script type="text/javascript">
    var map;
    var marker;
    var streetview;

    function initialize(myAddress, myLat, myLng){
        var mapOptions = {
            zoom: 12,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        map = new google.maps.Map(document.getElementById('||''''|| map_div ||''''||'), mapOptions);
        geocoder = new google.maps.Geocoder();
        geocoder.geocode({ '||''''|| 'address' ||''''||': myAddress}, function(results, status){
            if (status == google.maps.GeocoderStatus.OK){
                 var markerOptions = {
                    map: map,
                    draggable: true,
                    animation: google.maps.Animation.DROP,
                    flat: false
                    position: results[0].geometry.location
                 }
                 map.setCenter(results[0].geometry.location);
                 marker = new google.maps.Marker(markerOptions);

                 google.maps.event.addListener(marker, '||''''|| 'dragstart' ||''''||', function() {map.closeInfoWindow();})
                 google.maps.event.addListener(marker, '||''''|| 'dragend' ||''''||', function(event){
                    document.getElementById("'||lat_item||'").value=event.latLng.lat();
                    document.getElementById("'||long_item||'").value=event.latLng.lng();
                 });
            }
            else {
                 document.getElementById("||map_div||'").interHTML = "No map data found for this address. Did you enter correct address?";
            }
        });
    }  
</script>;

--

sys.htp.p (a_map);
EXCEPTION
    WHEN OTHERS
    THEN
    re_aplication_error (-20000, 'error in show_location: ' || SQLERRM);
end show_location;​

您没有用单引号将脚本字符串括起来:

   a_map := '<script type="text/javascript" ...
...
    }  
</script>';

或者由于您的脚本可能包含引号,您可以使用引号 text literal 语法,这样您就不必对它们进行转义:

   a_map := q'%<script type="text/javascript" ...
...
    }  
</script>%';

这里棘手的事情是选择引号分隔符;无论如何,像 <、[、# 等常见的可能会出现在脚本中。我选择了 %,但您可能需要更改它,因为您确定不会出现在文本中。