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