{"id":185,"date":"2009-06-24T11:18:04","date_gmt":"2009-06-24T05:48:04","guid":{"rendered":"http:\/\/www.oratraining.com\/blog\/?p=185"},"modified":"2009-06-24T11:18:04","modified_gmt":"2009-06-24T05:48:04","slug":"plsql-quick-reference","status":"publish","type":"post","link":"https:\/\/www.oratraining.com\/blog\/2009\/06\/plsql-quick-reference\/","title":{"rendered":"PL\/SQL quick reference"},"content":{"rendered":"<pre>\n<h2><strong>Oracle PL\/SQL Quick Reference<\/strong><\/h2>\n<strong>\u00a0<\/strong>\n<h3>PL\/SQL Block Structure<\/h3>\nDECLARE --Optional\n\n\u00a0 --Variables, Cursors, User-defined exceptions\n\nBEGIN --Mandatory\n\n\u00a0 --SQL statements\n\n\u00a0 --PL\/SQL statements\n\nEXCEPTION --Optional\n\n\u00a0 --Actions to perform when errors occur\n\nEND; --Mandatory\n\n<!--more-->\u00a0\n\n<strong>PL\/SQL Block Type<\/strong>\n\n<strong>Anonymous \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 Procedure \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 Function<\/strong>\n\n[DECLARE] \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 PROCEDURE name \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 FUNCTION name\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IS\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 RETURN datatype \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 IS\n\nBEGIN \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 BEGIN \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 BEGIN\n\n\u00a0 --statements \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0--statements \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0--statements\n\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0 \u00a0\u00a0\u00a0 \u00a0\u00a0RETURN value;\n\n[EXCEPTION] \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 [EXCEPTION] \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 [EXCEPTION]\n\nEND ; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 END ; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 END ;\n\n<strong>\u00a0<\/strong>\n\n<strong>Declaring PL\/SQL Variables<\/strong>\n\nidentifier [CONSTANT] datatype [NOT NULL]\n\n\u00a0\u00a0 [:=|DEFAULT expr];\n\n<strong>\u00a0<\/strong>\n\n<strong>Assigning Values to Variables<\/strong>\n\nidentifier := expr;\n\n<strong>Types of Variables<\/strong>\n\n<strong>PL\/SQL variables:<\/strong>\n<ul type=\"disc\">\n\t<li>Scalar<\/li>\n\t<li>Composite<\/li>\n\t<li>Reference<\/li>\n\t<li>LOB(<strong>L<\/strong>arge <strong>OB<\/strong>jects)<\/li>\n<\/ul>\n<strong>Non-PL\/SQL variables:<\/strong> Bind or host variables\n<ul type=\"disc\">\n\t<li>Used to pass run time values out of the PL\/SQL block back to the Host environment<\/li>\n<\/ul>\n<strong>\u00a0<\/strong>\n\n<strong>Base Scalar Datatypes<\/strong>\n\nVARCHAR2(maximum_length) \u00a0\u00a0\u00a0\u00a0 BOOLEAN\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 CHAR[(maximum_length)]\n\nDATE \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LONG \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LONG RAW \u00a0\u00a0 \n\nBINARY_INTEGER \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PLS_INTEGER\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NUMBER(precision,scale)\n\nTIMESTAMP\n\n<strong>The %TYPE Attribute<\/strong>\n\nIdentifier Table_name.column_name%TYPE ;\n\nIdentifier Variable_name%TYPE ;\n\n<strong>\u00a0<\/strong>\n\n<strong>Composite Datatypes<\/strong>\n\nINDEX BY TABLE \u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 RECORD\u00a0\u00a0\u00a0\u00a0\u00a0 NESTED TABLE \u00a0\u00a0\u00a0\u00a0 VARRAY\n\n<strong>\u00a0<\/strong>\n\n<strong>LOB Datatypes<\/strong>\n\nCLOB \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BLOB \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 BFILE \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 NCLOB\n\n<strong>\u00a0<\/strong>\n\n<strong>Creating Bind Variables<\/strong>\n\nVARIABLE variable_name dataype\n\n<strong>\u00a0<\/strong>\n\n<strong>Displaying Bind Variables<\/strong>\n\nPRINT [variable_name]\n\n<em>NOTE: To reference a bind variable in PL\/SQL, you must prefix it's name with colon (:)<\/em>\n\n<strong>Commenting Code<\/strong>\n\n--prefix single-line comments with two dashes\n\n\/* Place muti-line comment between the symbols *\/\n\n<strong>\u00a0<\/strong>\n\n<strong>SELECT Statements in PL\/SQL<\/strong>\n\nSELECT {column_list|*}\n\nINTO {variable_name[,variable_name]...\n\n\u00a0\u00a0\u00a0\u00a0\u00a0 |record_name}\n\nFROM table\n\n[WHERE condition];\n\n<em>NOTE: The INTO clause is must and queries must return one and only one row. A CURSOR can be used to retrieve more than one row.<\/em>\n\n<em>\u00a0<\/em>\n\n<strong>Implicit Cursor Attributes for DML statements<\/strong>\n\nSQL%ROWCOUNT\n\nSQL%FOUND\n\nSQL%NOTFOUND\n\nSQL%ISOPEN\n\n<strong>\u00a0<\/strong>\n\n<strong>Control Structures<\/strong>\n\n<strong>IF Statement \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Basic Loop<\/strong>\n\nIF condition THEN \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 LOOP\n\n\u00a0\u00a0 statements; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0statements;\n\n[ELSIF condition THEN \u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0...\n\n\u00a0\u00a0 statements;] \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0EXIT [WHEN condition];\n\n[ELSE \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 END LOOP;\n\n\u00a0\u00a0 statements;]\n\nEND IF;\n\n<strong>\u00a0<\/strong>\n\n<strong>FOR Loop \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 WHILE Loop<\/strong>\n\nFOR counter IN [REVERSE] \u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 WHILE condition LOOP\n\n\u00a0\u00a0 Lower_bound..upper_bound LOOP \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0statement1;\n\n\u00a0\u00a0 statement1; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0statement2;\n\n\u00a0\u00a0 statement2; \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0...\n\n\u00a0\u00a0 ... \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 END LOOP;\n\nEND LOOP;\n\n<strong>\u00a0<\/strong>\n\n<strong>CASE<\/strong>\n\nCASE selector\n\n\u00a0\u00a0 WHEN expression1 THEN result1\n\n\u00a0\u00a0 WHEN expression2 THEN result2\n\n\u00a0\u00a0 ...\n\n\u00a0\u00a0 WHEN expressionN THEN resultN\n\n\u00a0 \u00a0[ELSE resultN+1]\n\nEND;\n\n<strong>Creating a PL\/SQL Record<\/strong>\n\nTYPE type_name IS RECORD\n\n(field_declaration[,field_declaration]...) ;\n\nidentifier type_name ;\n\n<strong>\u00a0<\/strong>\n\n<strong>Where field_declaration is:<\/strong>\n\nfield_name {field_type|variable%TYPE|\n\ntable.column%TYPE|table%ROWTYPE}\n\n[[NOT NULL] {:=|DEFAULT} expr]\n\n<strong>\u00a0<\/strong>\n\n<strong>Referencing Fields in the Record<\/strong>\n\nrecord_name.field_name\n\n<strong>\u00a0<\/strong>\n\n<strong>Declaring Records with the %ROWTYPE Attribute<\/strong>\n\nDECLARE\n\nrecord_name \u00a0\u00a0\u00a0\u00a0\u00a0 reference%ROWTYPE\n\n<strong>\u00a0<\/strong>\n\n<strong>Creating a PL\/SQL Table (INDEX BY Table)<\/strong>\n\nTYPE type_name IS TABLE OF\n\n{column_type|variable%TYPE|table.column%TYPE\n\n|variable%ROWTYPE} [NOT NULL]\n\n[INDEX BY BINARY_INTEGER];\n\nidentifier type_name ;\n\n<strong>\u00a0<\/strong>\n\n<strong>Referencing a PL\/SQL table<\/strong>\n\npl_sql_table_name(primary_key_value)\n\n<strong>Using PL\/SQL Table Method<\/strong>\n\ntable_name.method_name[(parameters)]\n\n<strong>\u00a0<\/strong>\n\n<strong>PL\/SQL Table Methods<\/strong>\n\nEXITS(n) \u00a0\u00a0 COUNT \u00a0\u00a0\u00a0\u00a0\u00a0 FIRST \u00a0\u00a0\u00a0\u00a0\u00a0 LAST \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 PRIOR(n)\n\nNEXT(n) \u00a0\u00a0\u00a0 EXTEND(n,i) \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 TRIM \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 DELETE\n\n<strong>PL\/SQL Table of Records<\/strong>\n\nTYPE table_name_type IS TABLE OF table_name%ROWTYPE\n\nINDEX BY BINARY_INTEGER ;\n\ntable_name table_name_type ;\n\n<strong>\u00a0<\/strong>\n\n<strong>Referencing a Table of Records<\/strong>\n\ntable_name(index).field\n\n<strong>\u00a0<\/strong>\n\n<strong>Cursor<\/strong>\n\n<strong>Declaring the Cursor in Declaration Section<\/strong>\n\nCURSOR cursor_name IS select_statement ;\n\nrecord_name cursor_name%ROWTYPE ;\n\n<strong>\u00a0<\/strong>\n\n<strong>Opening and Closing the Cursor<\/strong>\n\nOPEN cursor_name ;\n\nCLOSE cursor_name ;\n\n<strong>\u00a0<\/strong>\n\n<strong>Fetching Data from the Cursor<\/strong>\n\nFETCH cursor_name\n\nINTO [variable1(,variable2,...)\n\n\u00a0\u00a0\u00a0 |record_name] ;\n\n<strong>\u00a0<\/strong>\n\n<strong>Explicit Cusor Attributes<\/strong>\n\ncursor_name%ISOPEN\n\ncursor_name%NOTFOUND\n\ncursor_name%FOUND\n\ncursor_name%ROWCOUNT\n\n<strong>\u00a0<\/strong>\n\n<strong>Cursor FOR Loops<\/strong>\n\nFOR record_name IN cursor_name LOOP\n\n\u00a0\u00a0 statement1;\n\n\u00a0\u00a0 statement2;\n\n\u00a0\u00a0 ...\n\nEND LOOP;\n\n<strong>\u00a0<\/strong>\n\n<strong>Cursor FOR Loops Using Subqueries<\/strong>\n\nFOR record_name IN (subqueries) LOOP\n\nstatement1\n\n...\n\nEND LOOP ;\n\n<strong>\u00a0<\/strong>\n\n<strong>Cursors with Parameters<\/strong>\n\nCURSOR cursor_name [(cursor_parameter_name datatype\n\n[,...])]\n\nIS select_statement\n\n[FOR UPDATE [OF column_reference][NOWAIT]];\n\n<strong>\u00a0<\/strong>\n\n<strong>Parameter Name<\/strong>\n\ncursor_parameter_name [IN] datatype [{:=|DEFAULT}expr]\n\n<strong>\u00a0<\/strong>\n\n<strong>Openning with Parameters<\/strong>\n\nOPEN cursor_name(cursor_parameter_name[,...]);\n\n<strong>\u00a0<\/strong>\n\n<strong>Cursor FOR Loops with parameters<\/strong>\n\nFOR record_name IN cursor_name(cursor_parameter_name\n\n[,...]) LOOP\n\n\u00a0\u00a0 statement1;\n\n\u00a0\u00a0 statement2;\n\n\u00a0\u00a0 ...\n\nEND LOOP;\n\n<strong>\u00a0<\/strong>\n\n<strong>WHERE CURRENT OF clause<\/strong>\n\nUPDATE|DELETE ... WHERE CURRENT OF cursor_name ;\n\n<strong>\u00a0<\/strong>\n\n<strong>Predefined Exceptions<\/strong>\n\nNO_DATA_FOUND\n\nTOO_MANY_ROWS\n\nINVALID_CURSOR\n\nZERO_DIVIDE\n\nDUP_VAL_ON_INDEX\n\n<strong>\u00a0<\/strong>\n\n<strong>Exception<\/strong>\n\n<strong>Trapping Exceptions<\/strong>\n\nEXCEPTION\n\n\u00a0\u00a0 WHEN exception1 [OR exception2 ...] THEN\n\nstatement1 ;\n\nstatement2 ;\n\n...\n\n\u00a0\u00a0 [WHEN exception3 [OR exception4 ...] THEN\n\nstatement1 ;\n\nstatement2 ;\n\n...]\n\n\u00a0\u00a0 [WHEN OTHERS THEN\n\nstatement1 ;\n\nstatement2 ;\n\n...]\n\n<strong>\u00a0<\/strong>\n\n<strong>Declaring Non-Predefined Oracle Sever Exception<\/strong>\n\nDECLARE\n\n\u00a0\u00a0 exception EXCEPTION ;\n\n\u00a0\u00a0 PRAGMA EXCEPTION_INIT(exception, error_number) ;\n\n<strong>\u00a0<\/strong>\n\n<strong>Referencing the declared Non-predefined execption<\/strong>\n\nBEGIN\n\n\u00a0\u00a0 ...\n\nEXCEPTION\n\n\u00a0\u00a0 WHEN exception THEN\n\nstatement1 ;\n\n...\n\nEND ;\n\n<strong>Trapping User-Defined Exceptions<\/strong>\n\nDECLARE\n\n\u00a0\u00a0 exception EXCEPTION ;\n\nBEGIN\n\n\u00a0\u00a0 ...\n\n\u00a0\u00a0 IF SQL%NOTFOUND THEN\n\nRAISE exception ;\n\n\u00a0\u00a0 END IF ;\n\n\u00a0\u00a0 ...\n\nEXCEPTION\n\n\u00a0\u00a0 WHEN exception THEN\n\nstatement1 ;\n\n...\n\nEND ;\n\n<strong>Functions for Trapping Exceptions<\/strong>\n\nSQLCODE \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return error code\n\nSQLERRM \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 return error message\n\n<strong>\u00a0<\/strong>\n\n<strong>RAISE_APPLICATION_ERROR<\/strong><strong> procedure(Executable\/Exception<\/strong>\n\n<strong>Section)<\/strong>\n\nRAISE_APPLICATION_ERROR ( error_number,\n\n\u00a0 message [, {TRUE|FALSE}]) ;\n\nerror_number \u00a0\u00a0\u00a0\u00a0 between -20000 to -20999\n\nmessage \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 string up to 2,048 bytes long\n\nTRUE \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 placed on the stack of previous errors.\n\nFALSE \u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 replaces all previous errors\n\n<strong>\u00a0<\/strong><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Oracle PL\/SQL Quick Reference \u00a0 PL\/SQL Block Structure DECLARE &#8211;Optional \u00a0 &#8211;Variables, Cursors, User-defined exceptions BEGIN &#8211;Mandatory \u00a0 &#8211;SQL statements \u00a0 &#8211;PL\/SQL statements EXCEPTION &#8211;Optional \u00a0 &#8211;Actions to perform when errors occur END; &#8211;Mandatory<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[31,4,8,11,13],"tags":[54,72,196,107,111,119,128,132,135,140],"class_list":["post-185","post","type-post","status-publish","format-standard","hentry","category-database-programming","category-oracle","category-database","category-oracle-developers","category-oracle-plsql","tag-commands","tag-guide","tag-oracle","tag-plsql","tag-quick-reference","tag-reference","tag-sql","tag-sqlplus","tag-syntax","tag-tutorial"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/posts\/185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/comments?post=185"}],"version-history":[{"count":0,"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/posts\/185\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/media?parent=185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/categories?post=185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.oratraining.com\/blog\/wp-json\/wp\/v2\/tags?post=185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}