Skip to Main Content

SQL Developer

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

SQL Developer 19.2.1 - Custom format: Align procedure/function parameters with below the brackets

User_ASUC3May 5 2021 — edited May 7 2021

Hi,
We have a requirement to align the functions and procedures in the below format.

Capture1.JPGi dont have much knowledge about arbori coding.
I Would appreciate any help here.

Comments

David Berger
Answer

Hello d670...

I would try this code:

DECLARE

  p_studentid   NUMBER;

  v_result      VARCHAR2(20); 

BEGIN 

  p_studentid := 1;

  FOR rec_result IN (SELECT students.firstname

                          , test_history.score

                          , test_id.test_name

                          , test_id.passing_grade 

                       FROM students 

                       JOIN test_history 

                         ON students.STUDENT_ID = test_history.student_id 

                       JOIN test_id 

                         ON test_id.test_id = test_history.test_id 

                      WHERE students.student_id = p_studentid 

                       AND test_history.SCORE < test_id.passing_grade   -->  This row has to be deleted!

                    )

  LOOP

     IF rec_result.score < rec_result.passing_grade

      THEN v_result := 'Fail';

      ELSE v_result := 'Pass';

     END IF;

     DBMS_OUTPUT.PUT_LINE (rec_result.firstname || ' ' || TO_CHAR(rec_result.score) || ' ' || rec_result.test_name || ' ' || TO_CHAR(rec_result.passing_grade) || ' ' || 'Result = ' || v_result);   

  END LOOP; 

END; 

/

I hope it helps.

Regards, David

Marked as Answer by 2652078 · Sep 27 2020
Moazzam

However, if the student has passed it just returns 'Result = Pass'  and fails to return their name, tests, grade and passing grade.


If you find yourself wanting a function that returns multiple values, you would generally want to either

- create a procedure that has multiple OUT parameters

- create a function that returns an object type that encapsulates the values you want to return


can functions return multiple values?


CREATE OR REPLACE TYPE user_data_type AS OBJECT(val1 NUMBER(15), val2 NUMBER(15));
/

CREATE OR REPLACE FUNCTION GET_EMPLOYEE_AND_USER(in_login IN fnd_user.user_name%TYPE)
 
RETURN user_data_type AS

  out_var user_data_type
;

 
CURSOR buffer_cur IS
  
SELECT f.user_id, f.employee_id FROM Fnd_User f WHERE f.user_name = in_login;

BEGIN
 
OPEN buffer_cur;
 
FETCH buffer_cur INTO out_var.val1, out_var.val2;

 
CLOSE buffer_cur;
 
RETURN out_var;
END GET_EMPLOYEE_AND_USER;


plsql - Returning multiple values from PL/SQL function - Stack Overflow

2652078

Hi Folks

Thank you very much for your help. I should have mentioned that i needed to do this in a parameterised cursor. Despite your answers working perfectly, i realised i could just move the DBMS_OUTPUT.PUT_LINE inside the loop and i ended up solving my own problem.

Your code looks much better though!!!

Thanks again

Ben

1 - 3

Post Details

Added on May 5 2021
3 comments
512 views