Avatar billede jgni Nybegynder
13. august 2007 - 10:58 Der er 6 kommentarer og
1 løsning

Ora 920-fejl

Jeg får pludselig ud af det blå en ora 920-fejl
Det er en fejl der siger at mine operatorer skulle være forkert.
Det er i linien her at fejlen kommer (første linie i min where-clause):

WHERE (((PROBSUMMARYM1.PROBLEM_STATUS) Not Like "Closed")
Enkeltøjne og at putte %-tegn i, er prøvet.

Her er koden:

SELECT PROBSUMMARYM1.NUMBERPRGN,
PROBSUMMARYM1.PROBLEM_STATUS AS Status,
PROBSUMMARYM1.PRIORITY_CODE AS Priority,
PROBSUMMARYM1.DOWNTIME_START AS Opened,
PROBSUMMARYM1.BRIEF_DESCRIPTION AS Title,
PROBSUMMARYM1.CONTACT_NAME AS Name,
PROBSUMMARYM1.LOGICAL_NAME,
PROBSUMMARYM1.ASSIGNMENT,
PROBSUMMARYM1.OPEN_TIME AS Opened2

FROM PROBSUMMARYM1

WHERE (((PROBSUMMARYM1.PROBLEM_STATUS) Not Like "Closed")
AND ((PROBSUMMARYM1.DOWNTIME_START)<Date()-12)
AND ((PROBSUMMARYM1.ASSIGNMENT)="AC FLOWALARM")
AND ((PROBSUMMARYM1.OPEN_TIME)>Date()-31))
OR (((PROBSUMMARYM1.PROBLEM_STATUS) Not Like "Closed")
AND ((PROBSUMMARYM1.DOWNTIME_START)<Date()-12)
AND ((PROBSUMMARYM1.LOGICAL_NAME)="TOPAS"))
OR (((PROBSUMMARYM1.PROBLEM_STATUS) Not Like "Closed")
AND ((PROBSUMMARYM1.DOWNTIME_START)<Date()-12)
AND ((PROBSUMMARYM1.LOGICAL_NAME)="CUBUS"))
OR (((PROBSUMMARYM1.PROBLEM_STATUS) Not Like "Closed")
AND ((PROBSUMMARYM1.DOWNTIME_START)<Date()-12)
AND ((PROBSUMMARYM1.LOGICAL_NAME)="SOL"))
OR (((PROBSUMMARYM1.PROBLEM_STATUS) Not Like "Closed")
AND ((PROBSUMMARYM1.DOWNTIME_START)<Date()-12)
AND ((PROBSUMMARYM1.LOGICAL_NAME)="SCM"))

ORDER BY PROBSUMMARYM1.DOWNTIME_START DESC , PROBSUMMARYM1.OPEN_TIME DESC;
Avatar billede nielle Nybegynder
13. august 2007 - 11:00 #1
Hvorfor bruger du NOT LIKE?

WHERE (((PROBSUMMARYM1.PROBLEM_STATUS) <> "Closed")
Avatar billede jgni Nybegynder
13. august 2007 - 11:04 #2
I dag ligger det i en Access-db. Det vil sige at jeg trækker informationerne fra Oracle-db'en via Access.

Ved ikke om den kan lide <>. Men det kan jeg da lige teste.
Avatar billede jgni Nybegynder
13. august 2007 - 11:06 #3
Problemet fortsætter desværre. Tror ikke det er operatoren den er gal med :S
Avatar billede holdam Nybegynder
13. august 2007 - 11:18 #4
Tekstkonstanter i Oracle skal skrives med apostroffer (') og ikke gåseøjne ("). Men hvis du har prøvet det, må det være noget andet (eller mere) der er galt.

Jeg kunne mistænke Date(). Normalt tilgår man dags dato i Oracle med sysdate, men der kan selvfølgelig være en PL/SQL-funktion i din database der hedder Date().
Avatar billede jgni Nybegynder
13. august 2007 - 11:21 #5
holdam, smid et svar (og fortæl mig lige hvordan jeg bruger sysdate så).

For det var det. Efter jeg kommenterede den del ud, så virkede det.
Så mangler jeg bare at finde ud af hvorfor hulen det ikke virker fra Access mere.
Avatar billede holdam Nybegynder
13. august 2007 - 12:26 #6
Her er så et svar.

Du kan skrive noget i retning af:

SELECT bla-bla FROM bla-bla
WHERE PROBSUMMARYM1.DOWNTIME_START-sysdate<12

-forudsat at "downtime_start" er en DATE-kolonne.

Bemærk at Oracle regner i dage - hvis du skal regne i timer og/eller minutter skal du dividere med 24 eller 2440. Se evt. mere her: http://www.akadia.com/services/ora_date_time.html
Avatar billede holdam Nybegynder
13. august 2007 - 12:27 #7
Omvendt selvfølgelig!

SELECT bla-bla FROM bla-bla
WHERE PROBSUMMARYM1.DOWNTIME_START<sysdate-12
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester