«ORA-01422: ακριβή φέρω επιστρέφει περισσότερο από το απαιτούμενο αριθμό των σειρών» έχω πάρει αυτό το σφάλμα κατά την εκτέλεση μπλοκ μου

ψήφοι
0

Θα wannt για να εμφανιστεί 4 στήλες με κεφαλαία PLSQL και δεν είμαι σε θέση να εκτελέσετε τον κώδικα έχω προτάσεις written.Any;

   DECLARE
    rsid    objectbase.asset_id%TYPE;
    obid    i18n_objectbase.object_id%TYPE;
    nme     i18n_objectbase.name%TYPE;
    descp   i18n_objectbase.short_description%TYPE;
BEGIN
    SELECT
        ob.asset_id,
        o.object_id,
        o.name,
        o.short_description
    INTO
        rsid,
        obid,
        nme,
        descp
    FROM
        objectbase        ob
        JOIN i18n_objectbase   o ON ( ob.object_id = o.object_id );

    dbms_output.put_line(rsid
                         || obid
                         || nme
                         || descp);
END;
/
Δημοσιεύθηκε 24/10/2019 στις 11:55
πηγή χρήστη
Σε άλλες γλώσσες...                            


1 απαντήσεις

ψήφοι
0

Κάτι τέτοιο θα κάνει το κόλπο, αλλά δεν είμαι σίγουρος γιατί θα χρειαστεί αυτό το είδος της PL SQL κώδικα (Παρακαλούμε να σημειωθεί ότι έχω απλοποιηθεί η οποία εν μέρει) ... Εδώ είναι:

DECLARE
   rsid    varchar2(100);
   obid    varchar2(100);
   nme     varchar2(100);
   descp   varchar2(100);

   cursor c_test
   is
   SELECT ob.asset_id
          , ob.object_id
          , ob.name
          , ob.short_description
   FROM objectbase ob;
BEGIN

   FOR i in c_test loop

      rsid := i.asset_id;
      obid := i.object_id;
      nme := i.name;
      descp := i.short_description;

      dbms_output.put_line(rsid
                        || obid
                        || nme
                        || descp);

   END LOOP;
END;

Εδώ είναι η DEMO

Στη συνέχεια, χρησιμοποιήστε το εξής:

DECLARE
    rsid    varchar2(100);
    obid    varchar2(100);
    nme     varchar2(100);
    descp   varchar2(100);

BEGIN
    FOR i IN (SELECT  ob.asset_id
                      , ob.object_id 
                      , ob.name
                      , ob.short_description
              FROM objectbase ob) LOOP

       rsid := i.asset_id;
       obid := i.object_id;
       nme := i.name;
       descp := i.short_description;

       dbms_output.put_line(rsid
                         || obid
                         || nme
                         || descp);

    END LOOP;
END;
/

Εδώ είναι η DEMO

Και εδώ είναι ο κώδικας με πίνακες και στήλες σας:

DECLARE
    rsid    objectbase.asset_id%TYPE;
    obid    i18n_objectbase.object_id%TYPE;
    nme     i18n_objectbase.name%TYPE;
    descp   i18n_objectbase.short_description%TYPE;
BEGIN

    FOR i IN (SELECT
        ob.asset_id,
        o.object_id,
        o.name,
        o.short_description
    FROM
        objectbase ob
        JOIN i18n_objectbase o ON ( ob.object_id = o.object_id )) loop

        rsid := i.asset_id;
        obid := i.object_id;
        nme := i.name;
        descp := i.short_description;

        dbms_output.put_line(rsid
                         || obid
                         || nme
                         || descp);
    END LOOP;
END;
Απαντήθηκε 24/10/2019 στις 13:00
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more