Dites-moi, s'il vous plaît, pourquoi la valeur vide vient-elle? Pour envoyer une requête, j'utilise SoapUI 5.5.
Mais : body n'est pas nul.
Dois-je faire quelque chose dans les paramètres d'ORDS?
DECLARE --b_body BLOB := :body; c_body CLOB := :body_text; BEGIN if :body_text is null then htp.print('EMPTY'); end if; END;
3 Réponses :
Si je me souviens bien, ce n'est pas une bonne idée d'utiliser les deux liaisons dans un bloc de code ... Si ORDS vérifie que vous utilisez: body,: body_text n'est pas renseigné (je pense qu'en raison des performances globales de conversion d'un blob en clob).
Alors utilisez simplement: body_text et ça devrait aller!
Ce symptôme peut résulter de la création de services RESTful via d'anciennes versions de l'interface APEX SQL Workshop. APEX 5.1 présente certainement ce comportement, peut-être d'autres. Si vous ne parvenez pas à mettre à niveau APEX, utilisez SQL Developer pour créer vos modules ORDS.
Comme indiqué dans la documentation https://docs.oracle.com/en/database/oracle/oracle-rest-data-services/18.3/aelig/implicit-parameters.html# GUID-76A23568-EA67-4375-A4AA-880E1D160D27 , pour chaque paramètre implicite: body et: body_text " s'il est déréférencé plus d'une fois, alors la deuxième et les suivantes déréférences apparaîtront vides. " Alors, changez votre code comme ceci: DECLARE
--b_body BLOB := :body;
c_body CLOB := :body_text;
BEGIN
if c_body is null then
htp.print('EMPTY');
end if;
END;