Skip to Main Content

MySQL Database

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!

MySQL cluster 5.7

User_QFJU6Oct 18 2017 — edited Oct 18 2017

Ima currently in a POC with the above mentioned product.  after successfully inatalling the cluster I am in the process of setting up replication.  Not sure why the autoinstaller does not  give an option for replication, why cluster if you aren't going for either high availability or scalable access.  after a successful mysqldump from the intended master, the import failed.  I used the following for the import: mysql  -h 127.0.0.1 --user=root -p  < /u00/mydbcl/backup.sq and recieved this error:  ERROR 1036 (HY000) at line 418: Table 'ndb_apply_status' is read only

teh OS permissiond are: -rw-r-----. 1 mydbcl mysql  8716 Oct 18 08:58 ndb_apply_status.frm.  teh mysql script was launched by the mydbcl user.  As this is a POC, I am a neophyte in MySQL

This post has been answered by User_QFJU6 on Oct 18 2017
Jump to Answer

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 Oct 18 2017
2 comments
123 views