반응형
저장 프로시저의 변수에 선택 할당
Oracle Database에 프로시저를 만들려고 하는데 쿼리 결과를 변수에 할당할 수 없습니다.디버그하려는 내용은 다음과 같습니다.
create or replace
PROCEDURE PCD_COMBAT (identifier_perso NUMBER, identifier_advers NUMBER) AS
ATT_PERSO NUMBER;
OFF_PERSO NUMBER;
DEF_ADVERS NUMBER;
BEGIN
OFF_PERSO := SELECT OFFENSE_PERSO FROM PERSONNAGE WHERE ID_PERSO = identifier_perso;
DEF_ADVERS := SELECT DEFENSE_ADVERSAIRE FROM PERSONNAGE WHERE ID_ADVERSAIRE = identifier_advers;
ATT_PERSO := OFF_PERSO - DEF_ADVERS;
IF ATT_PERSO < 1 { ATT_PERSO := 1 };
END PCD_COMBAT;
오라클 디벨로퍼에는 분명히 내 셀렉트가 그를 기쁘게 하지 않으며 그 이유를 알 수 없다고 적혀 있습니다.제가 읽은 오라클 라이브러리, 포럼 및 코드 샘플은 큰 도움이 되지 않았습니다.
사용하셔야 합니다.SELECT INTO
. 또한 교정기가 없습니다.PL/SQL
당신은 사용해야 합니다.THEN
그리고.END IF
. 저는 당신이 그 결과를 어떻게 할지 잘 모르겠습니다.돌려드릴까요?그럼 당신은 당신이.FUNCTION
. (검증되지 않은) 다음과 같은 모양이어야 합니다.
create or replace
FUNCTION PCD_COMBAT (identifier_perso NUMBER, identifier_advers NUMBER)
RETURN NUMBER
AS
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;
그런 변수에는 값을 할당할 수 없다고 생각합니다.다음과 같이 SELECT INTO를 시도합니다.
create or replace
PROCEDURE PCD_COMBAT (identifier_perso NUMBER, identifier_advers NUMBER) AS
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 { ATT_PERSO := 1 };
END PCD_COMBAT;
언급URL : https://stackoverflow.com/questions/16260068/assign-a-select-to-a-variable-in-a-stored-procedure
반응형
'programing' 카테고리의 다른 글
jQuery에서 Grep vs 필터? (0) | 2023.11.06 |
---|---|
mysql에서 구별되는 2개의 열 조합 선택 (0) | 2023.11.06 |
MySQL/MariaDB 커넥터를 배포하는 것과 모듈로 추가하는 것의 차이점은 무엇입니까? (0) | 2023.11.01 |
백슬래시 탈출 끈을 푸는 방법? (0) | 2023.11.01 |
C에서 정의되지 않은 동작인가요? 출력을 논리적으로 예측하지 않으면 (0) | 2023.11.01 |