<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://it-forensik.fiw.hs-wismar.de/index.php?action=history&amp;feed=atom&amp;title=SQL_Stored_Procedures</id>
	<title>SQL Stored Procedures - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://it-forensik.fiw.hs-wismar.de/index.php?action=history&amp;feed=atom&amp;title=SQL_Stored_Procedures"/>
	<link rel="alternate" type="text/html" href="http://it-forensik.fiw.hs-wismar.de/index.php?title=SQL_Stored_Procedures&amp;action=history"/>
	<updated>2026-10-31T11:42:14Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in IT-Forensik Wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>http://it-forensik.fiw.hs-wismar.de/index.php?title=SQL_Stored_Procedures&amp;diff=2233&amp;oldid=prev</id>
		<title>St190675 am 25. Februar 2022 um 10:37 Uhr</title>
		<link rel="alternate" type="text/html" href="http://it-forensik.fiw.hs-wismar.de/index.php?title=SQL_Stored_Procedures&amp;diff=2233&amp;oldid=prev"/>
		<updated>2022-02-25T10:37:03Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 25. Februar 2022, 10:37 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l51&quot;&gt;Zeile 51:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 51:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Stored Procedures bieten einen gewissen Schutz vor SQL-Injections, da sie Parameter/Daten und Anfragen getrennt voneinander behandeln können. So werden Parameter immer ausschließlich als Daten behandelt und nicht als Anfrage.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Stored Procedures bieten einen gewissen Schutz vor SQL-Injections, da sie Parameter/Daten und Anfragen getrennt voneinander behandeln können. So werden Parameter immer ausschließlich als Daten behandelt und nicht als Anfrage.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Allerdings ist dies kein absoluter Schutz, auch Stored Procedures können, unter gewissen Bedingungen, Angriffsflächen für SQL-Injections bieten. Beispielsweise wenn der Code in der Procedure dynamisch durch konkatenierte Parameter aufgebaut ist.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Allerdings ist dies kein absoluter Schutz, auch Stored Procedures können, unter gewissen Bedingungen, Angriffsflächen für SQL-Injections bieten. Beispielsweise wenn der Code in der Procedure dynamisch durch konkatenierte Parameter aufgebaut ist. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Daher sollten Stored Procedures, wenn möglich, immer ohne unsichere, dynamische SQL generierung geschrieben werden. Ist dies nicht möglich und es muss dynamischer Code implementiert werden, muss darauf geachtet werden, dass jeder User Input validiert oder escaped wird so dass kein SQL Code in die dynamisch generierte Anfrage eingeschleust werden kann. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;== Stored Procedures als Hilfsmittel für SQL Injections? ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;In seltenen Fällen können Stored Procedures das Risiko von SQL Injections nicht nur nicht verringern, sondern sogar erhöhen. Beispielsweise gibt es auf dem MS SQL Server standartmäßig drei Rollen mit entsprechenden Zugriffsrechten:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* db_datareader&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* db_datawriter&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* db_owner&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ohne Stored Procedures werden dem Anwender, je nach benötigten Rechten, die reader oder writer Rollen zugewiesen. Allerdings brauchen Stored Procedures, um korrekt zu funktionieren, gewisse Adminrechte um die Funktionen ausführen zu können, die von den lesenden und schreibenden Rollen nicht abgedeckt werden. In manchen Serversetups konnte es nun vorkommen, dass alle Applikationen automatisch unter db_owner – Rechten liefen um den Stored Procedures ihre Funktion zu ermöglichen. Dies heißt natürlich auch, dass ein Angreifer sich dies zu Nutzen machen kann und hierüber volle Rechte auf die Datenbank bekommen kann. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l59&quot;&gt;Zeile 59:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 70:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;https://www.sqlshack.com/sql-server-stored-procedures-for-beginners/&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;https://www.sqlshack.com/sql-server-stored-procedures-for-beginners/&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https://cheatsheetseries.owasp.org/cheatsheets/SQL_Injection_Prevention_Cheat_Sheet.html&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key it_forensik_wiki:diff:1.41:old-2224:rev-2233:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>St190675</name></author>
	</entry>
	<entry>
		<id>http://it-forensik.fiw.hs-wismar.de/index.php?title=SQL_Stored_Procedures&amp;diff=2224&amp;oldid=prev</id>
		<title>St190675 am 24. Februar 2022 um 09:48 Uhr</title>
		<link rel="alternate" type="text/html" href="http://it-forensik.fiw.hs-wismar.de/index.php?title=SQL_Stored_Procedures&amp;diff=2224&amp;oldid=prev"/>
		<updated>2022-02-24T09:48:47Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 24. Februar 2022, 09:48 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l51&quot;&gt;Zeile 51:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 51:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Stored Procedures bieten einen gewissen Schutz vor SQL-Injections, da sie Parameter/Daten und Anfragen getrennt voneinander behandeln können. So werden Parameter immer ausschließlich als Daten behandelt und nicht als Anfrage.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Stored Procedures bieten einen gewissen Schutz vor SQL-Injections, da sie Parameter/Daten und Anfragen getrennt voneinander behandeln können. So werden Parameter immer ausschließlich als Daten behandelt und nicht als Anfrage.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Allerdings ist dies kein absoluter Schutz, auch Stored Procedures können, unter gewissen Bedingungen, Angriffsflächen für SQL-Injections bieten. Beispielsweise wenn der Code in der Procedure dynamisch durch &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;konkatinierte &lt;/del&gt;Parameter aufgebaut ist.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Allerdings ist dies kein absoluter Schutz, auch Stored Procedures können, unter gewissen Bedingungen, Angriffsflächen für SQL-Injections bieten. Beispielsweise wenn der Code in der Procedure dynamisch durch &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;konkatenierte &lt;/ins&gt;Parameter aufgebaut ist.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key it_forensik_wiki:diff:1.41:old-2222:rev-2224:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>St190675</name></author>
	</entry>
	<entry>
		<id>http://it-forensik.fiw.hs-wismar.de/index.php?title=SQL_Stored_Procedures&amp;diff=2222&amp;oldid=prev</id>
		<title>St190675: /* Beispiel Syntax (MSSQL): */</title>
		<link rel="alternate" type="text/html" href="http://it-forensik.fiw.hs-wismar.de/index.php?title=SQL_Stored_Procedures&amp;diff=2222&amp;oldid=prev"/>
		<updated>2022-02-24T09:35:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Beispiel Syntax (MSSQL):&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 24. Februar 2022, 09:35 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l22&quot;&gt;Zeile 22:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 22:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;CREATE PROCEDURE&amp;lt;/code&amp;gt; SelectAllStudents @Gruppe nvarchar(30), @Semester nvarchar(2)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;CREATE PROCEDURE&amp;lt;/code&amp;gt; SelectAllStudents @Gruppe nvarchar(30), @Semester nvarchar(2)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;AS&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;AS&amp;lt;/code&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      &amp;lt;code style=&quot;color: blue&quot;&amp;gt;SELECT * FROM&amp;lt;/code&amp;gt; Studenten &amp;lt;code style=&quot;color: blue&quot;&amp;gt;WHERE&amp;lt;/code&amp;gt; Gruppe = @Gruppe AND Semester = @Semester&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      &amp;lt;code style=&quot;color: blue&quot;&amp;gt;SELECT * FROM&amp;lt;/code&amp;gt; Studenten &amp;lt;code style=&quot;color: blue&quot;&amp;gt;WHERE&amp;lt;/code&amp;gt; Gruppe = @Gruppe &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;code style=&quot;color: blue&quot;&amp;gt;&lt;/ins&gt;AND&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/code&amp;gt; &lt;/ins&gt;Semester = @Semester&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;GO;&amp;lt;/code&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;GO;&amp;lt;/code&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Aufruf:&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Aufruf:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;       &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      &amp;lt;code style=&quot;color: blue&quot;&amp;gt;EXEC&amp;lt;/code&amp;gt; SelectAllStudents @Gruppe = &#039;München&#039;, @Semester = &#039;5&#039;; &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;      &amp;lt;code style=&quot;color: blue&quot;&amp;gt;EXEC&amp;lt;/code&amp;gt; SelectAllStudents @Gruppe = &#039;München&#039;, @Semester = &#039;5&#039;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Warum Stored Procedures und nicht Funktionen? ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Warum Stored Procedures und nicht Funktionen? ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key it_forensik_wiki:diff:1.41:old-2221:rev-2222:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>St190675</name></author>
	</entry>
	<entry>
		<id>http://it-forensik.fiw.hs-wismar.de/index.php?title=SQL_Stored_Procedures&amp;diff=2221&amp;oldid=prev</id>
		<title>St190675: Die Seite wurde neu angelegt: „Unter einer Stored Procedure versteht man ein Stück gespeicherten SQL-Code der immer wieder ausführbar ist. Ähnlich wie Funktionen kann man SQL Stored Proce…“</title>
		<link rel="alternate" type="text/html" href="http://it-forensik.fiw.hs-wismar.de/index.php?title=SQL_Stored_Procedures&amp;diff=2221&amp;oldid=prev"/>
		<updated>2022-02-24T09:32:54Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Unter einer Stored Procedure versteht man ein Stück gespeicherten SQL-Code der immer wieder ausführbar ist. Ähnlich wie Funktionen kann man SQL Stored Proce…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Unter einer Stored Procedure versteht man ein Stück gespeicherten SQL-Code der immer wieder ausführbar ist. Ähnlich wie Funktionen kann man SQL Stored Procedures individuell anlegen und speichern, mit Parametern versehen, alternativ auch etwas zurückgeben lassen und anhand des Namens aufrufen. &lt;br /&gt;
Es bietet sich also an, Code den man häufig ausführt als Stored Procedure zu speichern.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beispiel Syntax (MSSQL): ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Anlegen einer Stored Procedure:&lt;br /&gt;
 &lt;br /&gt;
    &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;CREATE PROCEDURE&amp;lt;/code&amp;gt; SelectAllStudents&lt;br /&gt;
    &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;AS&amp;lt;/code&amp;gt;&lt;br /&gt;
    &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;SELECT * FROM&amp;lt;/code&amp;gt; Studenten&lt;br /&gt;
    &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;GO;&amp;lt;/code&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
Aufrufen dieser Stored Procedure:&lt;br /&gt;
     &lt;br /&gt;
     &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;EXEC&amp;lt;/code&amp;gt; SelectAllStudents;&lt;br /&gt;
      &lt;br /&gt;
Anlegen einer Stored Procedure mit Parametern:&lt;br /&gt;
     &lt;br /&gt;
     &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;CREATE PROCEDURE&amp;lt;/code&amp;gt; SelectAllStudents @Gruppe nvarchar(30), @Semester nvarchar(2)&lt;br /&gt;
     &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;AS&amp;lt;/code&amp;gt;&lt;br /&gt;
     &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;SELECT * FROM&amp;lt;/code&amp;gt; Studenten &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;WHERE&amp;lt;/code&amp;gt; Gruppe = @Gruppe AND Semester = @Semester&lt;br /&gt;
     &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;GO;&amp;lt;/code&amp;gt; &lt;br /&gt;
     &lt;br /&gt;
Aufruf:&lt;br /&gt;
     &lt;br /&gt;
     &amp;lt;code style=&amp;quot;color: blue&amp;quot;&amp;gt;EXEC&amp;lt;/code&amp;gt; SelectAllStudents @Gruppe = &amp;#039;München&amp;#039;, @Semester = &amp;#039;5&amp;#039;;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Warum Stored Procedures und nicht Funktionen? ==&lt;br /&gt;
&lt;br /&gt;
Stored Procedures und Funktionen sind in ihrer Funktion sehr ähnlich. Die Stored Procedures sind allerdings flexibler und benötigen weniger Code als Funktionen, da weder “BEGIN” und “END”, noch “RETURN” notwendig sind solange der Code nur eine Zeile lang ist.&lt;br /&gt;
Auch erlauben Stored Procedures mehrere Parameter, während Funktionen immer nur eine Variable oder Tabelle zurückgeben können.&lt;br /&gt;
Es ist nicht möglich in einer Funktion eine Procedure aufzurufen, umgekehrt ist es aber möglich, eine Funktion in einer Procedure aufzurufen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vorteile von Stored Procedures: ==&lt;br /&gt;
&lt;br /&gt;
* Da Stored Procedures in der Datenbank gespeichert werden ist es ohne großen Aufwand möglich mittels “ALTER PROCEDURE” den Code der Procedure zu verändern ohne dass ein Neustart nötig ist.&lt;br /&gt;
&lt;br /&gt;
* Stored Procedures ermöglichen eine große Zeitersparnis indem häufig genutzter Code nicht jedes Mal neu eingegeben werden muss und da Statements in der Regel vorkompiliert sind, wird auch Laufzeit gespart. &lt;br /&gt;
&lt;br /&gt;
* Es ist möglich Stored Procedures zu verschlüsseln, so dass der Inhalt nicht sichtbar ist. Wird der Zugriff auf die Tabelle nur über Procedures gestattet erhöht dies die Sicherheit vor unbefugtem Verändern der Daten. &lt;br /&gt;
&lt;br /&gt;
* Bessere Übersichtlichkeit des Codes durch zentral gehaltene und wiederverwendbare Procedures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stored Procedures als Schutz vor SQL-Injections ==&lt;br /&gt;
&lt;br /&gt;
Stored Procedures bieten einen gewissen Schutz vor SQL-Injections, da sie Parameter/Daten und Anfragen getrennt voneinander behandeln können. So werden Parameter immer ausschließlich als Daten behandelt und nicht als Anfrage. &lt;br /&gt;
Allerdings ist dies kein absoluter Schutz, auch Stored Procedures können, unter gewissen Bedingungen, Angriffsflächen für SQL-Injections bieten. Beispielsweise wenn der Code in der Procedure dynamisch durch konkatinierte Parameter aufgebaut ist.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Quellen ==&lt;br /&gt;
&lt;br /&gt;
https://www.w3schools.com/sql/sql_stored_procedures.asp&lt;br /&gt;
&lt;br /&gt;
https://www.sqlshack.com/sql-server-stored-procedures-for-beginners/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
YouTube:&lt;br /&gt;
&lt;br /&gt;
“Advanced SQL Tutorial | Stored Procedures + Use Cases” von “Alex The Analyst”&lt;br /&gt;
(https://www.youtube.com/watch?v=NrBJmtD0kEw)&lt;br /&gt;
&lt;br /&gt;
“SQL Stored Procedures - What They Are, Best Practices, Security, and More…” von “IamTimCorey”&lt;br /&gt;
(https://www.youtube.com/watch?v=Sggdhot-MoM)&lt;/div&gt;</summary>
		<author><name>St190675</name></author>
	</entry>
</feed>