Monday, November 3, 2008

Ampersand Characters (&) in Oracle SQL scripts

An ampersand when detected inside a script will prompt SQL*PLUS to interactively ask for the value to use for the variable (It thinks anything prepended with an & is a variable).

To disable this behavior, you can specify to use 'set scan off;' as the first line in your SQL script:

set scan off;

INSERT INTO "4XX_DATA" ( ID, DATAAREAID, ACCOUNTNUM, USE_AXAPTA_NAME, AXAPTANAME,
USE_AXAPTA_ADDRESS, AXAPTAADDRESS, AXAPTAADDRESSLN2, AXAPTACITY, AXAPTASTATE, AXAPTAAXAPTAZIPCODE,
AXAPTAPHONE, SENTTODB, NOT_SENT_TO_LAWSON, USE_MATCH_ADDRESS, PRIMARY_ADDRESS, SECONDARY_ADDRESS,
CITY2, STATE2, ZIP_CODE, ZIP_4_CODE, MATCHZIP4, MATCHGRADE, CONFIDENCE_CODE, DUNS2, BUSINESS_NME,
SECOND_NME, USE_PRIMARY_ADDRESS, PRIMARY_ADDR_1, PRIMARY_ADDR_2, CITY_NME_50, STATE_ABBREV_10,
PRIMARY_ZIP, COUNTRY_NME_50, COUNTY_NME_45, USE_MAIL_ADDRESS, MAIL_ADDRESS_64, MAIL_ADDRESS_2,
MAIL_CITY_50, MAIL_STATE_ABBREV_GMDI, MAIL_ZIP, PHONE_16, FAX_NBR_NT_FMTD, GBL_ULT_DUNS_NBR,
HDQ_DUNS_NBR, SIC_1_32, DUNS, REASON__NOTES, PRIMARYZIP5, PRIMARYZIP4, MAILZIP5, MAILZIP4,
DNB_ADDRESS, DNB_CITY, DNB_STATE, DNB_ZIP_5, DNB_ZIP_4, DNB_COUNTY, DNBADDRESSLN2, RECFROM,
AXAPTACOUNTRY, DNB_COUNTRY, AXAPTACOUNTY ) VALUES (
'687', '435', '000181', 'FALSE', 'A & J Conti, Inc.', 'TRUE', '252 Hyde Park Ave.'
, NULL, 'Boston', 'MA', '02130', '617 328 4453', 'TRUE', 'FALSE', 'FALSE'
, '244 Bodge Hill Rd', NULL, 'Moultonboro', 'NH', '03254', '3410', '03254-3410', 'ZZZZZZZZZZZ'
, '0', NULL, 'A & J Conti, Inc.', NULL, 'FALSE', NULL, NULL, NULL, NULL, NULL, NULL
, NULL, 'FALSE', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '000000000'
, NULL, NULL, NULL, NULL, NULL, '252 Hyde Park Ave.', 'Boston', 'MA', '02130', NULL
, 'SUFFOLK', NULL, NULL, 'US', 'US', 'Suffolk');

The culprit variable is the '& J' for the value of the AXAPTANAME column ('A & J Conti, Inc.')

No comments: