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;