Вы здесь

JSON in PL/SQL Oracle 12c

I have a procedure with below structure:
procedure p_json (i_json clob)
is 
 l_firstname vacrchar2(10);
begin
--some code here
end;



Input parameter i_json will receive Json_object. Below is structure of json object :

{
          "FirstName"      : "John"
}



Below query is used for reading json_object from a table in sql: 

select json_value(j.doc,'$.FirstName')
from table j; //assuming doc is the column name in table



could you please suggest how to access the value of json object inside pl/sql procedure without inserting the input clob(json object) into a table.

Thanx!!
 

and we said...

In 12.1.0.2 json_value is a SQL function. But you can use in PL/SQL by placing it in a "select ... from dual" query!

declare
  json_doc varchar2(1000);
  fname    varchar2(10);
begin
  json_doc := '{
          "FirstName"      : "John"
}';
  
  select json_value(json_doc, '$.FirstName')
  into   fname
  from   dual;
  
  dbms_output.put_line(fname);
  
end;
/

PL/SQL procedure successfully completed.
John



Or use 12.2 where JSON in PL/SQL got a whole lot better. You can use json_value as a native function:

select * from v$version;

BANNER                                                                        CON_ID  
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production  0       
PL/SQL Release 12.2.0.1.0 - Production                                        0       
CORE 12.2.0.1.0 Production                                                    0       
TNS for Linux: Version 12.2.0.1.0 - Production                                0       
NLSRTL Version 12.2.0.1.0 - Production                                        0 

declare
  json_doc varchar2(1000);
  fname    varchar2(10);
begin
  json_doc := '{
          "FirstName"      : "John"
}';
  
  fname := json_value(json_doc, '$.FirstName');
  
  dbms_output.put_line(fname);
  
end;
/

PL/SQL procedure successfully completed.
John



Or the new JSON object types to get parts of a document:

declare
  json_doc json_object_t;
  fname    varchar2(10);
begin
  json_doc := json_object_t.parse('{
          "FirstName"      : "John"
}');
  
  fname := json_doc.get_String('FirstName');
  
  dbms_output.put_line('Name: ' || fname);
  
end;
/

PL/SQL procedure successfully completed.
Name: John

 

Post new comment

Filtered HTML

  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.

Plain text

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Строки и параграфы переносятся автоматически.
CAPTCHA
Этот вопрос задается для того, чтобы выяснить, являетесь ли Вы человеком или представляете из себя автоматическую спам-рассылку.
6 + 4 =
Решите эту простую математическую задачу и введите результат. Например, для 1+3, введите 4.