<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>SQL Server (και άλλες databases)</title><link>https://www.dotnetzone.gr:443/cs/forums/28/ShowForum.aspx</link><description>Θέματα που αφορούν τον SQL Server (7.0, 2000, 2005) αλλά και Oracle, Access, DB2, MySQL, κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: InsertUpdate</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10553.aspx</link><pubDate>Fri, 10 Mar 2006 20:10:53 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10553</guid><dc:creator>Ioannis P</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10553.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=10553</wfw:commentRss><description>Σας ευχαριστώ πολύ, αυτά ακριβώς ήθελα :-))))</description></item><item><title>Απ: InsertUpdate</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10529.aspx</link><pubDate>Fri, 10 Mar 2006 04:46:02 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10529</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10529.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=10529</wfw:commentRss><description>&lt;P&gt;Το ίδιο μπορείς να πετύχεις αν εκτελέσεις απλά το update πρωτο και το Insert δεύτερο:&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Lucida Console"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt;&amp;lt;FONT face="Lucida Console"&amp;gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;UPDATE&lt;/span&gt; SFITEST &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;SET&lt;/span&gt; &lt;br /&gt;   [NAME] = @name&lt;br /&gt; , SURNAME = @surname&lt;br /&gt; , AGE = @age&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;WHERE&lt;/span&gt; ID = @id&amp;lt;/FONT&amp;gt;&amp;lt;FONT face="Lucida Console"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;INSERT&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;INTO&lt;/span&gt; SFITEST (ID, [NAME], SURNAME, AGE) &lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;VALUES&lt;/span&gt; (@id, @name, @surname,@age)&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;WHERE&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;NOT&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;EXISTS&lt;/span&gt; (&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; ID &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;FROM&lt;/span&gt; SFITEST &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;WHERE&lt;/span&gt; ID = @id) &lt;br /&gt;&lt;br /&gt;&amp;lt;/FONT&amp;gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Το αποτέλεσμα είναι ακριβώς το ίδιο, και είναι και ANSI Standard SQL.Βέβαια, επειδή χρησιμοποιούμε SQL Server μπορούμε να ελέγξουμε το @@ROWCOUNT για να αποφύγουμε το (αμελητέο) select του insert.&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Lucida Console"&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt;&amp;lt;FONT face="Lucida Console"&amp;gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;UPDATE&lt;/span&gt; SFITEST &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;SET&lt;/span&gt; &lt;br /&gt;   [NAME] = @name&lt;br /&gt; , SURNAME = @surname&lt;br /&gt; , AGE = @age&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;WHERE&lt;/span&gt; ID = @id&amp;lt;/FONT&amp;gt;&amp;lt;FONT face="Lucida Console"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;IF&lt;/span&gt; &lt;span style="color: Fuchsia;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;@@ROWCOUNT&lt;/span&gt; = 0&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;INSERT&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;INTO&lt;/span&gt; SFITEST (ID, [NAME], SURNAME, AGE) &lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;VALUES&lt;/span&gt; (@id, @name, @surname,@age)&lt;br /&gt;&amp;lt;/FONT&amp;gt;&lt;/span&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;</description></item><item><title>Απ: InsertUpdate</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10501.aspx</link><pubDate>Thu, 09 Mar 2006 20:24:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10501</guid><dc:creator>cap</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10501.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=10501</wfw:commentRss><description>&lt;P&gt;"Γενική" έτοιμη SP είναι δύσκολο να κατασκευαστεί (θα μπορούσε να χρησιμοποιηθεί dynamic sql αλλά θα είχε διάφορους περιορισμούς). Αρα χρειάζεται να κατασκευάσεις μια "insertupdate" stored procedure για κάθε πίνακα στον οποίο θέλεις να κάνεις αυτή τη δουλειά.&lt;/P&gt;
&lt;P&gt;Δεν μας δίνεις ιδιαίτερα πολλές λεπτομέρειες σχετικά με τη δομή του πίνακα, οπότε θα παραθέσω μια σειρά από υποθέσεις:&lt;/P&gt;
&lt;P&gt;- Η στήλη-κλειδί δεν είναι autonumber (δεν θα έχει identity=yes δηλαδή), αλλά θα παίρνει τιμές από εσένα με κάποιον τρόπο&lt;BR&gt;- Η στήλη-κλειδί θα είναι ορισμένη ως primary key (πρωτεύον κλειδί)&lt;BR&gt;- Για το παράδειγμά μας, η στήλη-κλειδί είναι int.&lt;BR&gt;&lt;BR&gt;Εφτιαξα έναν απλό πίνακα για να κάνω τον έλεγχό μου. Παραθέτω το script παρακάτω:&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;CREATE&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;TABLE&lt;/span&gt; [dbo].[SFITest] (&lt;br /&gt; [id] [&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt;] &lt;span style="color: Silver;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;NOT&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;NULL&lt;/span&gt; ,&lt;br /&gt; [name] [&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;varchar&lt;/span&gt;] (100)  &lt;span style="color: Silver;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;NULL&lt;/span&gt; ,&lt;br /&gt; [surname] [&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;varchar&lt;/span&gt;] (100) &lt;span style="color: Silver;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;NULL&lt;/span&gt; ,&lt;br /&gt; [age] [&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt;] &lt;span style="color: Silver;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;NULL&lt;/span&gt; &lt;br /&gt;) &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;ON&lt;/span&gt; [&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;PRIMARY&lt;/span&gt;]&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;ALTER&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;TABLE&lt;/span&gt; [dbo].[SFITest] &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;WITH&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;NOCHECK&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;ADD&lt;/span&gt; &lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;CONSTRAINT&lt;/span&gt; [PK_SFITest] &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;PRIMARY&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;KEY&lt;/span&gt;  &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;CLUSTERED&lt;/span&gt; &lt;br /&gt; (&lt;br /&gt;  [id]&lt;br /&gt; )  &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;ON&lt;/span&gt; [&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;PRIMARY&lt;/span&gt;] &lt;br /&gt;GO&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Στη συνέχεια φτιάχνω μια Stored Procedure η οποία δέχεται τις τιμές των πεδίων του πίνακα και αποφασίζει αν θα κάνει update ή insert. Η Stored Procedure είναι αρκετά self-explaining οπότε δεν γράφω σχόλια:&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;CREATE&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;PROCEDURE&lt;/span&gt; SFITestInsertUpdate &lt;br /&gt;&lt;br /&gt;  @id &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt;&lt;br /&gt;, @name &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;varchar&lt;/span&gt;(100)&lt;br /&gt;, @surname &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;varchar&lt;/span&gt;(100)&lt;br /&gt;, @age &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;int&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;IF&lt;/span&gt; &lt;span style="color: Silver;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;EXISTS&lt;/span&gt; (&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;SELECT&lt;/span&gt; ID &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;FROM&lt;/span&gt; SFITEST &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;WHERE&lt;/span&gt; ID = @id) &lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;UPDATE&lt;/span&gt; SFITEST &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;SET&lt;/span&gt; &lt;br /&gt;   [NAME] = @name&lt;br /&gt; , SURNAME = @surname&lt;br /&gt; , AGE = @age&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;WHERE&lt;/span&gt; ID = @id&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;ELSE&lt;/span&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;BEGIN&lt;/span&gt;&lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;INSERT&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;INTO&lt;/span&gt; SFITEST&lt;br /&gt; (ID, [NAME], SURNAME, AGE) &lt;br /&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;VALUES&lt;/span&gt; (@id, @name, @surname,@age)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;END&lt;/span&gt;&lt;br /&gt;GO&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Προφανώς η SP αυτή θα πρέπει να προσαρμοστεί στο δικό σου πίνακα τόσο στις παραμέτρους όσο και στον κώδικα. Η χρήση της έχει ως εξής:&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;exec&lt;/span&gt; sfitestinsertupdate 2, &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;'sotiris'&lt;/span&gt;, &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;'filippidis'&lt;/span&gt;, 32&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Αν η εγγραφή με ID=2 υπάρχει, τότε θα γίνει update. Αν δεν υπάρχει, τότε θα εισαχθεί μια νέα εγγραφή με ID=2&lt;/P&gt;
&lt;P&gt;Επειδή αυτή η λογική θα πρέπει να αναπαραχθεί σε ΚΑΘΕ πίνακα για τον οποίο θέλεις να κάνεις τη δουλειά, καλό θα ήταν να εξοικειωθείς με την ιδεά ορισμένων code generation tools. Templates για την αυτοματοποιημένη δρομολογία τέτοιων stored procedures μπορείς να κάνεις σχετικά εύκολα με το My Generation (&lt;A href="http://www.mygenerationsoftware.com"&gt;http://www.mygenerationsoftware.com&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;Το θέμα φυσικά δεν εξαντλείται εδώ, άπλά προσπάθησα να κάνω μια καλή εισαγωγή. Για ο,τι άλλο χρειάζεσαι, εδώ είμαστε.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description></item><item><title>InsertUpdate</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/10494.aspx</link><pubDate>Thu, 09 Mar 2006 17:56:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:10494</guid><dc:creator>Ioannis P</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/10494.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=28&amp;PostID=10494</wfw:commentRss><description>Ξέρετε που θα βρω καμιά έτοιμη procedure για να κάνω insert αν δεν υπάρχει μια εγγραφή ή update αν υπάρχει; Το κλειδί της κάθε εγγραφής θα είναι μια στήλη.&lt;br&gt;</description></item></channel></rss>