Assign a Select to a variable in a stored procedure Assign a Select to a variable in a stored procedure oracle oracle

Assign a Select to a variable in a stored procedure


You need to use SELECT INTO. Also there are no braces in PL/SQL you need to use THEN and END IF. I am not quite sure what you do with the result. Do you want to give it back? Then you need a FUNCTION. It should look something like this (untested):

create or replaceFUNCTION PCD_COMBAT (identifier_perso NUMBER, identifier_advers NUMBER) RETURN NUMBERAS  ATT_PERSO NUMBER;  OFF_PERSO NUMBER;  DEF_ADVERS NUMBER; BEGIN       SELECT OFFENSE_PERSO     INTO OFF_PERSO     FROM PERSONNAGE    WHERE ID_PERSO = identifier_perso;  SELECT DEFENSE_ADVERSAIRE     INTO DEF_ADVERS     FROM PERSONNAGE    WHERE ID_ADVERSAIRE = identifier_advers;  ATT_PERSO := OFF_PERSO - DEF_ADVERS;  IF ATT_PERSO < 1 THEN      ATT_PERSO := 1;  END IF  RETURN ATT_PERSO;END PCD_COMBAT;


I don't think you can assign values to variables like that. Try SELECT INTO like this:

create or replacePROCEDURE PCD_COMBAT (identifier_perso NUMBER, identifier_advers NUMBER) ASATT_PERSO NUMBER;OFF_PERSO NUMBER;DEF_ADVERS NUMBER;BEGINSELECT OFFENSE_PERSO INTO OFF_PERSO FROM PERSONNAGE WHERE ID_PERSO = identifier_perso;SELECT DEFENSE_ADVERSAIRE INTO DEF_ADVERS FROM PERSONNAGE WHERE ID_ADVERSAIRE = identifier_advers;ATT_PERSO := OFF_PERSO - DEF_ADVERS;IF ATT_PERSO < 1 { ATT_PERSO := 1 };END PCD_COMBAT;