{"id":346,"date":"2012-10-10T09:51:11","date_gmt":"2012-10-10T00:51:11","guid":{"rendered":"http:\/\/www.freesens.com\/x\/?p=346"},"modified":"2024-01-16T09:50:30","modified_gmt":"2024-01-16T00:50:30","slug":"table-function%ea%b3%bc-join","status":"publish","type":"post","link":"http:\/\/www.freesens.com\/x\/?p=346","title":{"rendered":"Table Function\uacfc Join"},"content":{"rendered":"<p>\ucd9c\ucc98 :\u00a0<a href=\"http:\/\/ukja.tistory.com\/197\">http:\/\/ukja.tistory.com\/197<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>Table Function\uc744 \uc990\uaca8 \uc0ac\uc6a9\ud558\ub294 \uc0ac\ub78c\ub4e4\uc774 \uc788\uc744 \uac83\uc774\ub2e4.<\/p>\n<p>Table Function\uacfc \uad00\ub828\ud574\uc11c \uc798 \uc54c\ub824\uc9c0\uc9c0 \uc54a\uc740 \uc0ac\uc2e4 \uc911 \ud558\ub098\ub294\u00a0Join\uc5d0 \uad00\ud55c \uac83\uc774\ub2e4. Table Function\uc758 \uacb0\uacfc\ub294 \ub9d0 \uadf8\ub300\ub85c Table\uacfc \uac19\uc73c\ubbc0\ub85c Join\uc5d0 \ubb38\uc81c\uac00\u00a0 \uc5c6\uc5b4\uc57c \ud55c\ub2e4.<\/p>\n<p>\ud558\uc9c0\ub9cc \uc5b4\ub5bb\uac8c?<\/p>\n<p>\uac04\ub2e8\ud55c \uc608\ub97c \ud1b5\ud574 Table Function\uc744 Join\uc5d0\uc11c \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud558\ub294\uc9c0 \uc54c\uc544 \ubcf4\uc790.<\/p>\n<p>\ub2e4\uc74c\uacfc \uac19\uc774 Object Type\uacfc Collection Type\uc744 \uc120\uc5b8\ud55c\ub2e4.<\/p>\n<div>&#8212; create objects<br \/>\ncreate or replace type obj_type1 as object (<br \/>\nc1 int,<br \/>\nc2 int<br \/>\n);<br \/>\n\/<\/p>\n<p>create or replace type obj_tbl_type1 as table of obj_type1;<br \/>\n\/<\/p><\/div>\n<p>Collection Type\uc744 Return\ud558\ub294 Pipelined Function\uc744 \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<div>create or replace function func1<br \/>\nreturn obj_tbl_type1<br \/>\npipelined<br \/>\nis<br \/>\nv_obj obj_type1;<br \/>\nbegin<br \/>\nfor idx in 1 .. 100 loop<br \/>\nv_obj := obj_type1(idx, idx);<br \/>\npipe row(v_obj);<br \/>\nend loop;<br \/>\nend;<br \/>\n\/<\/div>\n<p>\ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9\ub41c\ub2e4.<\/p>\n<div>select * from table(func1());<\/p>\n<p>C1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 C2<br \/>\n&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;-<br \/>\n1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 1<br \/>\n2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2<br \/>\n3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3<br \/>\n4\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 4<br \/>\n5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 5<br \/>\n&#8230;<br \/>\n99\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 99<br \/>\n100\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 100<\/p><\/div>\n<p>\uc880 \ub354 \uc7ac\ubbf8\uc788\ub294 \ud14c\uc2a4\ud2b8\ub97c \uc704\ud574 \ub2e4\uc74c\uacfc \uac19\uc774 Argument\ub97c \ubc1b\ub294 Function\uc744 \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<div>create or replace function func2(p1 int, p2 int, p3 int)<br \/>\nreturn obj_tbl_type1<br \/>\npipelined<br \/>\nis<br \/>\nv_obj obj_type1;<br \/>\nbegin<br \/>\nfor idx in 1 .. p3 loop<br \/>\nv_obj := obj_type1(p1+idx, p2+idx);<br \/>\n<object id=\"bootstrapperukjatistorycom1972979\" width=\"1\" height=\"1\" classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http:\/\/download.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=6,0,40,0\"><param name=\"src\" value=\"http:\/\/ukja.tistory.com\/plugin\/CallBack_bootstrapperSrc?nil_profile=tistory&amp;nil_type=copied_post\" \/><param name=\"allowscriptaccess\" value=\"always\" \/><param name=\"wmode\" value=\"transparent\" \/><param name=\"enablecontextmenu\" value=\"false\" \/><param name=\"flashvars\" value=\"&amp;callbackId=ukjatistorycom1972979&amp;host=http:\/\/ukja.tistory.com&amp;embedCodeSrc=http%3A%2F%2Fukja.tistory.com%2Fplugin%2FCallBack_bootstrapper%3F%26src%3Dhttp%3A%2F%2Fs1.daumcdn.net%2Fcfs.tistory%2Fv%2F0%2Fblog%2Fplugins%2FCallBack%2Fcallback%26id%3D197%26callbackId%3Dukjatistorycom1972979%26destDocId%3Dcallbacknestukjatistorycom1972979%26host%3Dhttp%3A%2F%2Fukja.tistory.com%26float%3Dleft\" \/><param name=\"swliveconnect\" value=\"true\" \/><embed id=\"bootstrapperukjatistorycom1972979\" width=\"1\" height=\"1\" type=\"application\/x-shockwave-flash\" src=\"http:\/\/ukja.tistory.com\/plugin\/CallBack_bootstrapperSrc?nil_profile=tistory&amp;nil_type=copied_post\" allowscriptaccess=\"always\" wmode=\"transparent\" enablecontextmenu=\"false\" flashvars=\"&amp;callbackId=ukjatistorycom1972979&amp;host=http:\/\/ukja.tistory.com&amp;embedCodeSrc=http%3A%2F%2Fukja.tistory.com%2Fplugin%2FCallBack_bootstrapper%3F%26src%3Dhttp%3A%2F%2Fs1.daumcdn.net%2Fcfs.tistory%2Fv%2F0%2Fblog%2Fplugins%2FCallBack%2Fcallback%26id%3D197%26callbackId%3Dukjatistorycom1972979%26destDocId%3Dcallbacknestukjatistorycom1972979%26host%3Dhttp%3A%2F%2Fukja.tistory.com%26float%3Dleft\" swliveconnect=\"true\" \/><\/object>\u00a0\u00a0\u00a0 pipe row(v_obj);<br \/>\nend loop;<br \/>\nend;<br \/>\n\/<\/div>\n<p>\ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9\ub41c\ub2e4.<\/p>\n<div>select * from table(func2(1, 1, 10))<br \/>\n;<br \/>\nC1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 C2<br \/>\n&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;-<br \/>\n2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2<br \/>\n3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3<br \/>\n4\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 4<br \/>\n5\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 5<br \/>\n6\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 6<br \/>\n7\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 7<br \/>\n8\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 8<br \/>\n9\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 9<br \/>\n10\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 10<br \/>\n11\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 11<\/div>\n<p>\uc774 \ud568\uc218\ub97c \uc5b4\ub5bb\uac8c \ub2e4\ub978 Table\uacfc \uc870\uc778\ud558\ub294\uac00?<\/p>\n<div>drop table t1 purge;<br \/>\ncreate table t1(c1)<br \/>\nas<br \/>\nselect level from dual connect by level &lt;= 100<br \/>\n;<\/div>\n<p>\uc774\ub7f0 \ubc29\uc2dd\uc740 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n<div>select *<br \/>\nfrom t1, table(func2(p1, p2, 10))\u00a0x<br \/>\nwhere t1.c1 = x.c1<br \/>\n;<\/div>\n<p>\ub2e4\uc74c\uacfc \uac19\uc740 \ubb38\ubc95\uc774 \uc0ac\uc6a9\ub41c\ub2e4.<\/p>\n<div>select *<br \/>\nfrom t1, table(func2(t1.c1, t1.c1, 10))<br \/>\n;<\/p>\n<p>C1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 C1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 C2<br \/>\n&#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;- &#8212;&#8212;&#8212;-<br \/>\n1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 2<br \/>\n1\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 3<br \/>\n&#8230;<\/p><\/div>\n<p>\uc989, t1\uc758 \uacb0\uacfc\uac00 Function\uc758 \uc778\uc790\ub85c \ubc14\ub85c \uc0ac\uc6a9\ub41c\ub2e4. \uc774\ub54c \uc21c\uc11c\uac00 \uc911\uc694\ud558\ub2e4.<br \/>\n\ub2e4\uc74c\uacfc \uac19\uc774 \uc21c\uc11c\uac00 \ubc14\ub00c\uba74 Oracle\uc740 \ucc98\ub9ac\ud558\uc9c0 \ubabb\ud55c\ub2e4.<\/p>\n<div>select *<br \/>\nfrom table(func2(t1.c1, t1.c1, 10)), t1<br \/>\n;<br \/>\nERROR at line 2:<br \/>\nORA-00904: &#8220;T1&#8221;.&#8221;C1&#8243;: invalid identifier<\/div>\n<p>\uc774 \uc0ac\uc2e4\uc744 \uc751\uc6a9\ud558\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \uc790\uc720\ub86d\uac8c\u00a0Join\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n<div>select *<br \/>\nfrom<br \/>\n(select null as c1, null as c2 from dual connect by level &lt;= 100) s,<br \/>\ntable(func2(s.c1, s.c1, 10))<br \/>\n;<\/div>\n<p>\uc798 \uc774\uc6a9\ud558\uba74 \ub9e4\uc6b0 \uac15\ub825\ud55c Query\ub97c \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n<p>\uac00\ub839 \uc544\ub798 Query\ub97c \ubcf4\uc790.\u00a0Shared Pool(v$sql)\uc5d0 Cache\ub418\uc5b4 \uc788\ub294 Query\ub4e4 \uc911 buffer_gets(logical reads) \uc218\uce58\uac00 \ub192\uc740 \uc21c\uc73c\ub85c Runtime \uc2e4\ud589 \uacc4\ud68d\uc744 \ucd94\ucd9c\ud55c\ub2e4. \uc774\ub7f0 \ubcf5\uc7a1\ud574 \ubcf4\uc774\ub294 \uc694\uad6c \uc0ac\ud56d\ub3c4 Table Function\uc758 Join \uae30\ub2a5\uc744 \uc798 \uc774\uc6a9\ud558\uba74 \ub9e4\uc6b0 \uac04\ub2e8\ud55c\uac8c \uad6c\ud604\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>select plan_table_output<br \/>\nfrom<br \/>\n(select * from<br \/>\n(select s.sql_id, s.child_number<br \/>\nfrom v$sql s<br \/>\nwhere exists(select 1 from v$sql_plan p where p.plan_hash_value = s.plan_hash_value)<br \/>\norder by s.buffer_gets desc)<br \/>\nwhere rownum &lt;= 10<br \/>\n) s,<br \/>\ntable(dbms_xplan.display_cursor(s.sql_id, s.child_number, &#8216;allstats last&#8217;))<br \/>\n;<\/p>\n<p>(\ucd9c\ub825 \ubb38\uc81c\ub85c \uc9e4\ub9bc)<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nSQL_ID\u00a0 803b7z0t84sq7, child number 0<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nselect job, nvl2(last_date, 1, 0) from sys.job$ where (((:1 &lt;= next_date) and (<br \/>\n((last_date is null) and (next_date &lt; :3))) and (field1 = :4 or (field1 = 0 and<br \/>\n(this_date is null) order by next_date, job<\/p>\n<p>Plan hash value: 1846751226<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n| Id\u00a0 | Operation\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | Name | Starts | E-Rows | A-Rows |\u00a0\u00a0 A-Time\u00a0\u00a0 | Buf<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n|\u00a0\u00a0 1 |\u00a0 SORT ORDER BY\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0 1 |\u00a0\u00a0\u00a0\u00a0\u00a0 1 |\u00a0\u00a0\u00a0\u00a0\u00a0 0 |00:00:00.01 |<br \/>\n|*\u00a0 2 |\u00a0\u00a0 TABLE ACCESS FULL| JOB$ |\u00a0\u00a0\u00a0\u00a0\u00a0 1 |\u00a0\u00a0\u00a0\u00a0\u00a0 1 |\u00a0\u00a0\u00a0\u00a0\u00a0 0 |00:00:00.01 |<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>Predicate Information (identified by operation id):<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>2 &#8211; filter((((&#8220;NEXT_DATE&#8221;&gt;=:1 AND &#8220;NEXT_DATE&#8221;&lt;:2) OR (&#8220;LAST_DATE&#8221; IS NULL AN<br \/>\n(&#8220;FIELD1&#8243;=:4 OR (&#8216;Y&#8217;=:5 AND &#8220;FIELD1&#8243;=0)) AND &#8220;THIS_DATE&#8221; IS NULL)<\/p>\n<p>SQL_ID\u00a0 96g93hntrzjtr, child number 0<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\nselect \/*+ rule *\/ bucket_cnt, row_cnt, cache_cnt, null_cnt, timestamp#, sample<br \/>\nminimum, maximum, distcnt, lowval, hival, density, col#, spare1, spare2, avgcln<br \/>\nhist_head$ where obj#=:1 and intcol#=:2<\/p>\n<p>Plan hash value: 2239883476<\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n| Id\u00a0 | Operation\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | Name\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | Starts | A-Rows |\u00a0\u00a0 A<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br \/>\n|\u00a0\u00a0 1 |\u00a0 TABLE ACCESS BY INDEX ROWID| HIST_HEAD$\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0 1 |\u00a0\u00a0\u00a0\u00a0\u00a0 1 |00:0<br \/>\n|*\u00a0 2 |\u00a0\u00a0 INDEX RANGE SCAN\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | I_HH_OBJ#_INTCOL# |\u00a0\u00a0\u00a0\u00a0\u00a0 1 |\u00a0\u00a0\u00a0\u00a0\u00a0 1 |00:0<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n<p>Predicate Information (identified by operation id):<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<p>2 &#8211; access(&#8220;OBJ#&#8221;=:1 AND &#8220;INTCOL#&#8221;=:2)<\/p>\n<p>Note<br \/>\n&#8212;&#8211;<br \/>\n&#8211; rule based optimizer used (consider using cbo)<br \/>\n&#8230;<\/p>\n<p>(Pipelined) Table Function\uc740 \uc801\uc7ac\uc801\uc18c\uc5d0 \uc798 \uc0ac\uc6a9\ud558\uba74 \ub9e4\uc6b0 \uc138\ub828\ub41c Query\uc640 Application\uc744 \uac00\ub2a5\ud558\uac8c \ud574 \uc8fc\ub294 \uc88b\uc740 \uae30\ub2a5\uc774\ub77c\uace0 \uc0dd\uac01\ub41c\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ucd9c\ucc98 :\u00a0http:\/\/ukja.tistory.com\/197 &nbsp; Table Function\uc744 \uc990\uaca8 \uc0ac\uc6a9\ud558\ub294 \uc0ac\ub78c\ub4e4\uc774 \uc788\uc744 \uac83\uc774\ub2e4. Table Function\uacfc \uad00\ub828\ud574\uc11c \uc798 \uc54c\ub824\uc9c0\uc9c0 \uc54a\uc740 \uc0ac\uc2e4 \uc911 \ud558\ub098\ub294\u00a0Join\uc5d0 \uad00\ud55c \uac83\uc774\ub2e4. Table Function\uc758 \uacb0\uacfc\ub294 \ub9d0 \uadf8\ub300\ub85c Table\uacfc \uac19\uc73c\ubbc0\ub85c Join\uc5d0 \ubb38\uc81c\uac00\u00a0 \uc5c6\uc5b4\uc57c \ud55c\ub2e4. \ud558\uc9c0\ub9cc \uc5b4\ub5bb\uac8c? \uac04\ub2e8\ud55c \uc608\ub97c \ud1b5\ud574 Table Function\uc744 Join\uc5d0\uc11c \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ud558\ub294\uc9c0 \uc54c\uc544 \ubcf4\uc790. \ub2e4\uc74c\uacfc \uac19\uc774 Object Type\uacfc Collection Type\uc744 \uc120\uc5b8\ud55c\ub2e4. &#8212; create objects create &hellip; <a href=\"http:\/\/www.freesens.com\/x\/?p=346\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Table Function\uacfc Join<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[24,28],"class_list":["post-346","post","type-post","status-publish","format-standard","hentry","category-etc","tag-oracle","tag-28"],"_links":{"self":[{"href":"http:\/\/www.freesens.com\/x\/index.php?rest_route=\/wp\/v2\/posts\/346","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.freesens.com\/x\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.freesens.com\/x\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.freesens.com\/x\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.freesens.com\/x\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=346"}],"version-history":[{"count":1,"href":"http:\/\/www.freesens.com\/x\/index.php?rest_route=\/wp\/v2\/posts\/346\/revisions"}],"predecessor-version":[{"id":347,"href":"http:\/\/www.freesens.com\/x\/index.php?rest_route=\/wp\/v2\/posts\/346\/revisions\/347"}],"wp:attachment":[{"href":"http:\/\/www.freesens.com\/x\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=346"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.freesens.com\/x\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=346"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.freesens.com\/x\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=346"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}