{"id":7220,"date":"2013-02-20T22:58:53","date_gmt":"2013-02-20T21:58:53","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/?p=7220"},"modified":"2013-02-20T23:00:12","modified_gmt":"2013-02-20T22:00:12","slug":"einfugen-in-table-valued-function","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2013\/02\/20\/sql-talk\/sql-server\/einfugen-in-table-valued-function","title":{"rendered":"Einf&#252;gen in Table-Valued-Functions"},"content":{"rendered":"<p>Ich bin ein gro&#223;er Freund von Inline-Table-Valued-Functions. Das sind Funktionen, die nur aus einem SELECT-Statement bestehen, dass eine Tabelle als Ergebnis liefert. Hier ein Beispiel:<\/p>\n<p><code lang=\"sql\">CREATE FUNCTION test3.f_orders<br \/>\n(@name\tNVARCHAR(100))<br \/>\nRETURNS TABLE<br \/>\nRETURN (SELECT ordid, o.custid, o.uid, orderdate, total<br \/>\n        FROM test3.orders AS o<br \/>\n        JOIN test3.user2customers AS uc<br \/>\n          ON o.custid=uc.custid<br \/>\n        JOIN test3.users AS u<br \/>\n          ON uc.uid=u.uid<br \/>\n        WHERE u.name = @name);<\/code><\/p>\n<p>Sie werden manchmal  als parametrisierte Views bezeichnet, weil wirklich eine sehr gro&#223;e Verwandtschaft zu Views besteht. Das geht so weit, dass man sowohl Daten &quot;in&quot; die Funktion einf&#252;gen als auch &#228;ndern kann. Damit das geht, m&#252;ssen freilich wieder die gleichen Regeln wie bei Views eingehalten werden.<\/p>\n<p>Beispiel f&#252;r INSERT:<br \/>\n<code lang=\"sql\">INSERT INTO test3.f_orders('Tom') (custid)<br \/>\nVALUES (2);<\/code><\/p>\n<p>Beispiel f&#252;r UPDATE:<br \/>\n<code lang=\"sql\">UPDATE o<br \/>\nSET total=(SELECT SUM(price*amount)<br \/>\n           FROM test3.f_orderdetails(&#x0027;Tom&#x0027;) AS od<br \/>\n           WHERE od.ordid=o.ordid)<br \/>\nFROM test3.f_orders(&#x0027;Tom&#x0027;) AS o<br \/>\nWHERE o.ordid=@ordid<\/code><\/p>\n<p>Das Beispiel f&#252;r DELETE ist ein Bausatz f&#252;r Euch als Hausaufgabe&#8230; \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ich bin ein gro&#223;er Freund von Inline-Table-Valued-Functions. Das sind Funktionen, die nur aus einem SELECT-Statement bestehen, dass eine Tabelle als Ergebnis liefert. Hier ein Beispiel: CREATE FUNCTION test3.f_orders (@name NVARCHAR(100)) RETURNS TABLE RETURN (SELECT ordid, o.custid, o.uid, orderdate, total FROM test3.orders AS o JOIN test3.user2customers AS uc ON o.custid=uc.custid JOIN test3.users AS u ON uc.uid=u.uid [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[903],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/7220"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=7220"}],"version-history":[{"count":7,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/7220\/revisions"}],"predecessor-version":[{"id":7227,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/7220\/revisions\/7227"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=7220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=7220"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=7220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}