Comment passer/les paramètres d'appel (valeurs) à partir de la Fonction de 'Sélectionner' stmt dans SQL*Plus?
J'ai un problème de passage de paramètres à partir de la fonction que j'ai créé dans SQL*Plus "Select" énoncé dans la clause 'where'. Cependant, il semble que quelle que soit la syntaxe j'ai utilisé est incorrect ou de ne pas l'utiliser du tout dans cette clause 'where' situation.
Voici ma fonction que j'ai créé et il est OK d'être compilé et exécuté de bonne:
CREATE OR REPLACE FUNCTION SA_BILL_CNTRL_EXTRNL_FXN(p_client_code VARCHAR2
,p_bill_seq VARCHAR2
,p_bill_control_seq VARCHAR2)
RETURN VARCHAR2 IS
v_external_id VARCHAR2(30);
v_client_code VARCHAR2(4) := p_client_code;
v_bill_seq NUMBER := to_number(p_bill_seq);
v_bill_control_seq NUMBER := to_number(p_bill_control_seq);
v_cnt NUMBER;
BEGIN
SELECT COUNT(*)
INTO v_cnt
FROM BillControl@SQL_SAREP bc
WHERE bc."ExternalID" IS NOT NULL
AND bc."ExternalID" != ''
AND bc."ClientCode" = p_client_code
AND bc."BillControlSeq" = v_bill_control_seq
AND bc."BillSeq" = v_bill_seq;
IF v_cnt = 1 THEN
SELECT bc."ExternalID"
INTO v_external_id
FROM BillControl@SQL_SAREP bc
WHERE bc."ExternalID" IS NOT NULL
AND bc."ExternalID" != ''
AND bc."ClientCode" = p_client_code
AND bc."BillControlSeq" = v_bill_control_seq
AND bc."BillSeq" = v_bill_seq;
ELSE
v_external_id := NULL;
END IF;
RETURN v_external_id;
END SA_BILL_CNTRL_EXTRNL_FNX;
/
Aussi, lorsque j'ai utilisé "EN DEHORS" du paramètre dans la fonction après l'échec de l'exécution.
Maintenant, ici, c'est le 'Select' déclaration que je vais avoir de la difficulté à passer des paramètres avec:
SELECT NVL(TRIM(eb.CASE_NUM_REEVALUATED), TRIM(eb.CASE_NUM_DUPLICATED)) CaseNumReev
,gnc.BILL_CONTROL_SEQ
FROM EPE_Bill eb NETWORK_CROSSWALK gnc
WHERE substr(eb.MIC_BILL_ID, 5, 4) = SA_BILL_CNTRL_EXTRNL_FNX(p_client_code)
AND gnc.BILL_CONTROL_SEQ = SA_BILL_CNTRL_EXTRNL_FNX(p_bill_seq)
AND (to_number(substr(eb.MIC_BILL_ID, 10, 10), '9999999999') = SA_BILL_CNTRL_EXTRNL_FNX(p_bill_control_seq)
GROUP BY CaseNumReev, gnc.BILL_CONTROL_SEQ;
Pour les deux derniers jours, je l'ai été moi-même à fond perflexed.
Avec ça, je serais vraiment reconnaissant si vous m'aider avec la question.
Merci encore...
- Votre fonction prend 3 paramètres (pas de défaut) et pourtant, vous êtes à l'appeler avec seulement 1, ce qui n'est pas valide.
- Quelle erreur avez-vous? Vous avez également une faute de frappe avec votre nom de la fonction dans votre posté code. Dans votre créer, c'est SA_BILL_CNTRL_EXTRNL_FXN, dans votre clause where, il est SA_BILL_CNTRL_EXTRNL_FNX.
- Vous aussi vous ne pouvez pas
group by
un alias de colonne; vous devez répéter la quinvl
de l'alinéa (ou de l'envelopper d'un autre select). Vous ne pouvez pas appeler une fonction avec unin out
paramètre de SQL normales, comme vous l'avez déjà découvert.
Vous devez vous connecter pour publier un commentaire.
Essayer le dessous de fonction,Aussi j'ai fait l'hypothèse que, puisque vous êtes de passage à un seul paramètre, le reste doit être NULL
Et votre SQL DOIT ÊTRE