Sziasztok!
Tudna nekem valaki abban tanácsot adni, hogy egy SQL Developerben használt lekérdezés (hiba nélkül fut) SQLPlus-ba történő átültetésekor miért fut hibára?
Az x.sql fájl-t Notepadban megírva, Unicode mentve, a lenti hibát kapom.
Előre is köszönöm a válaszokat!
dombi1976
- 476 megtekintés
Hozzászólások
Ne notepadba mentsd, mert az tesz BOM-ot az UTF8-as filek elejére. Használj Notepad++-t, vi-t, emacsot, edlin-t, amit csak akarsz, de nótpedet ne.
- A hozzászóláshoz be kell jelentkezni
vagy legalábbis használja a vonatkozó "convert.." menüpontot nevezett np++-ban :)
- A hozzászóláshoz be kell jelentkezni
> "egy SQL Developerben használt lekérdezés (hiba nélkül fut) SQLPlus-ba történő átültetésekor miért fut hibára "
Scriptként futtatod? akkor is ilyenkor nem a rendes sqlplus interpreter kapja meg a kódot, csak egy limitált emulátor. ha tesztelni akarod a kódot akkor rendesen futtasd le sqlplus-ból...
Ha windowson fog futni amúgyis minden nem egyszerűbb 8859-2 -t használni? console-ban is chcp és olvashatóak lesznek az üzenetek :)
The script runner emulates a limited set of SQL*Plus features. You can often enter SQL and SQL*Plus statements and execute them by clicking the Run Script icon. The Script Output pane displays the output.
The SQL*Plus features available in the script runner include @, @@, CONNECT, EXIT, QUIT, UNDEFINE, WHENEVER, and substitution variables. For example, to run a script named c:\myscripts\mytest.sql, type @c:\myscripts\mytest in the Enter SQL Statement box, and click the drop-down next to the Execute Statement icon and select Run Script.
The following considerations apply to using the SQL Developer script runner:
You cannot use bind variables. (The Execute SQL Statement feature does let you use bind variables of type VARCHAR2, NUMBER, and DATE.)
For substitution variables, the syntax &&variable assigns a permanent variable value, and the syntax &variable assigns a temporary (not stored) variable value.
For EXIT and QUIT, commit is the default behavior, but you can specify rollback. In either case, the context is reset: for example, WHENEVER command information and substitution variable values are cleared.
DESCRIBE works for most, but not all, object types for which it is supported in SQL*Plus.
For SQL*Plus commands that are not supported, a warning message is displayed.
SQL*Plus comments are ignored.
For XMLType data, data in the column is displayed as "SYS.XMLDATA" if the database connection uses a JDBC Thin driver, but the expanded XML values are displayed if the connection uses an OCI (thick, Type 2) driver.
If you have SQL*Plus available on your system, you may want to use it instead of the script runner.
https://docs.oracle.com/cd/E12151_01/doc.150/e12152/intro.htm#CHDIJIEF
- A hozzászóláshoz be kell jelentkezni
8859-2 meg nem halt ki a gecibe?
- A hozzászóláshoz be kell jelentkezni
windows-on? :D
- A hozzászóláshoz be kell jelentkezni
hat a windowson is utf8 kurvareg ota a default...
- A hozzászóláshoz be kell jelentkezni
Nem UTF-16?
- A hozzászóláshoz be kell jelentkezni
és ez hol zavar cégeket akik 10-15-20+éves infra-kat használnak, magasról szarva ilyen "apróság"okra? Jah, hogy sajtreszelő? hát amíg "csak" annak az akinek érdemben dolgoznia is kell vele (aki persze <> $-t elosztóval) addig nem szánnak rá fabatkát se.. Tudod akkor keresik a vödröt amikor már legégett a ház :)
- A hozzászóláshoz be kell jelentkezni
Annyira nem, hogy szaporodik, és most Windows-1250-nek híjják.
- A hozzászóláshoz be kell jelentkezni
Kicsit off: direkt szivatod magad a magyar nyelvi kornyezettel, vagy ebben KELL dolgozni? (Nem arrol beszelek, hogy a DB-ben vannak ekezetek, hanem a magyar parancssorrol.) Meg, jo, hogy ir hiba kodot, az legalabb nemzetkoziul van.
- A hozzászóláshoz be kell jelentkezni
Mivel magát a sort nem raktad ide, amin elhal, csak tippelek:
1) UTF BOM van a file elején.
2) ékezetes betűk vannak valahol, iso fiszfaszban.
- A hozzászóláshoz be kell jelentkezni
Köszönöm mindenkinek a hozzászólást.
haladok, a megoldással de még vannak gondjaim.
A fenti képen jelentkező hibát sikerült megoldanom, kiküszöbölnöm.
A probléma az volt, hogy a kódban volt egy üres sor, a OR előtt és e miatt már nem ismerte fel utasításnak.
Szóval nem a karakter kódolás okozta az alap problémát. De ezen túl vagyok.
Amivel most küzdök, az alapvető SQL kérdés szerintem.
A WHERE részben található az alábbi részlet.
AND
(
PO.PO_LINE_LOCATIONS_ALL.LINE_LOCATION_ID =
PO.PO_DISTRIBUTIONS_ALL.LINE_LOCATION_ID
)
AND
(
PO.PO_DISTRIBUTIONS_ALL.LINE_LOCATION_ID =
PO.PO_REQUISITION_LINES_ALL.LINE_LOCATION_ID(+)
)
AND
(
PO.PO_REQUISITION_LINES_ALL.REQUISITION_HEADER_ID =
PO.PO_REQUISITION_HEADERS_ALL.REQUISITION_HEADER_ID
)
No most itt hal meg a tudásom, hogy a (+) mit is jelent. Ezét nem is tudom "átfordítani" SQLPlus-ra.
- A hozzászóláshoz be kell jelentkezni
oracle féle join notation, az sqlplus elvileg gond nélkül kezeli.
- A hozzászóláshoz be kell jelentkezni
A (+) az Oracle saját szintaktikai eleme LEFT/RIGHT JOIN-ra, attól függően, melyik oldalra teszed. A példád egy része lefordítva ANSI SQL-re:
SELECT
FROM PO.PO_DISTRIBUTIONS_ALL PO_DISTRIBUTIONS_ALL
LEFT JOIN PO.PO_REQUISITION_LINES_ALL PO_REQUISITION_LINES_ALL
ON (PO_DISTRIBUTIONS_ALL.LINE_LOCATION_ID = PO_REQUISITION_LINES_ALL.LINE_LOCATION_ID)
De ez csak megfogalmazás kérdése, mind a két szintakszis működik Oracle alatt.
- A hozzászóláshoz be kell jelentkezni