Table of Contents
In de afgelopen week hebben sommige van onze lezers ons laten weten dat ze de sp2-0552-fout in Oracle hebben.
Goedgekeurd
Deze SP2-0552-fout is omdat uw huidige opgegeven bindvariabele niet bedoeld was. Voer de opdracht VARIABLE uit om te onderzoeken of de bindvariabelen die u in uw SQL-instructie hebt gebruikt, bestaan. Voordat u een SQL-instructie met grote verschilvariabelen uitvoert, moet u de opdracht VARIABLE gebruiken om elke variabele te declareren.
Merk ook op dat het herhaalde gebruik van hole-variabelen de letterlijke deze tekenreeks in het WHERE-predikaat omvat, zodat u de volledige afdelingsnaam ernaast kunt vervangen (zodat u exact dezelfde zoekopdracht voor alle afdelingen kunt gebruiken).
VARIABLE v_max_sal NUMBER;VARIABLE v_dname VARCHAR2 (14);beginnen: v_dname: = max (sal) 'VERKOOP';Selecteer NL: v_max_salAuteur: scott.emp e, scott.dept dwaar e.deptno impliceert d.deptnoen D. = dnaam: v_dnaam;EINDE;/print v_max_sal;
Je kunt het ook uit de dubbele punt halen om met een bepaalde variabele te beginnen, en dat wordt ook een beetje vermoeiend:
SQL> stelt de computeruitvoer in opDeclareer SQL> tijd v_max_sal NUMBER (20); 3. Begin 4 liever max (sal) IN v_max_sal alle vijf van scott.emp ourite, scott.dept d acht, locatie e.e.deptno = d.deptno some en d.dname is gelijk aan 'SALES'; dbms_output Het zou belangrijk zijn. put_line (v_max_sal); 9 EINDE; 10 /2850
Merk op dat deze belangrijke optie resulteert in een soortgelijk onderzoek in uw database naast de oplossing voorgesteld door @Alex:
SELECTEER MAX (SAL) DE SCOTT.EMP E, SCOTT.DEPT D O E.DEPTNO is gelijk aan D.DEPTNO ET D.DNAME = 'SALES'
De uitgebreide optie bij de lancering die aan deze pick-up is gekoppeld, resulteert in reflectie met BV in de WHERE-clausule:
SELECTEER MAX. (VERKOOP) SCOTT.EMP E, SCOTT.DEPT D O E.DEPTNO = D.DEPTNO EN D.DNAME =: B1
Vraag: wat te doen?Wat doe ik om PL SQL-fout SP2-0552 op te lossen?