Jump to content
Sign in to follow this  
mullfreak

Gespeicherte Prozeduren

Recommended Posts

Hallo,

ich habe eine Verständnisfrage zu "Gespeicherte Prozeduren". Wenn ich im SQL 2005 Mgm. Studio sage "Neue gespeicherte Prozedur..." dann kann ich eine neue Prozedur erstellen. Will ich die abspeichern, dann hat diese die Endung *.sql.

Sind also gespeicherte Prozeduren nix anderes als SQL-Skripts?

 

Gruß

Mull

Share this post


Link to post

Moin,

 

das Abspeichern im SSMS ist das Exportieren als Skript. Das hat nichts mit dem Datenbankobjekt selbst zu tun.

 

Eine Stored Procedure erzeugst du als Datenbankobjekt, indem du sie mit "CREATE PROCEDURE" erzeugst. Führst du diese Anweisung aus, legt SQL Server die Prozedur in der aktuellen Datenbank ab. Dort steht sie dann allen Anwendungen zur Verfügung.

 

Inhaltlich kann man eine Stored Procedure durchaus als SQL-Skript bezeichnen, das direkt in der Datenbank gespeichert ist. Beim ersten Aufruf wird die Prozedur vorkompiliert und dadurch bei weiteren Aufrufen beschleunigt ausgeführt. Das ist eine sehr effiziente Art, Anwendungslogik direkt in der Datenbank abzulegen.

 

Gruß, Nils

Share this post


Link to post

Hi Nils,

 

vielen Dank für Deine Antwort.

 

Ich hab mir ein MS-Buch gekauft, wo als How-To ein Webshop mit Datenbank programmiert wird in VB und SQL.

 

Dort werden die Datenbank-Abfragen wie z. B. einen User erstellen als Stored Procedure abgelegt. Hier z. B. mal ein Skript:

ALTER PROCEDURE dbo.CurrentUser
(
@EMail		NVARCHAR(10),
@Passwort	NVARCHAR(10)
)
AS

SELECT
Nutzer.Id,
Nutzer.IsAdmin,
Nutzer.Name,
Nutzer.Vorname,
Nutzer.Strasse,
Nutzer.StrasseNr,
Nutzer.PLZ,
Nutzer.Ort,
Nutzer.EMail,
Nutzer.passwort
FROM
Nutzer
WHERE
Nutzer.EMail=@EMail AND Nutzer.passwort=@passwort

RETURN

 

Dies ist 1:1 aus dem Buch und eine CREATE PROCEDURE kann ich hier nicht finden. Warum?

Eine Frage ist auch, wo ich eine CREATE PROCEDURE anlege. Kann das auch in Visual Studio sein? Oder soll dies im Manag. Studio sein?

 

Gruß

Mull

Share this post


Link to post

Moin,

 

das Skript fängt mit ALTER PROCEDURE an, versucht also, eine vorhandene Prozedur zu verändern. Entweder hat der Autor da geschlampt, oder es gibt vorher ein Beispiel, in dem die Prozedur mit CREATE erzeugt wird.

 

Eine CREATE-Anweisung (oder auch ALTER) wird durch den SQL Server ausgeführt. Wie sie dorthinkommt, ist erst mal egal. Man kann das sicher von Visual Studio aus machen (ich arbeite nicht damit und weiß es daher nicht genau). Auf jeden Fall geht es vom SSMS oder einem anderen SQL-Client aus.

 

Gruß, Nils

Share this post


Link to post

Hi Nils,

 

ich tausche jetzt "ALTER" gegen "CREATE", dann führe ich im SQL die Prozedur aus. Es wird dann eine Stored Procedure gespeichert mit Namen dbo.CurrentUser. Diese hat dann folgenden, veränderten Code:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

ALTER PROCEDURE [dbo].[CurrentUser]
(
@EMail		NVARCHAR(10),
@Passwort	NVARCHAR(10)
)
AS

SELECT
Nutzer.Id,
Nutzer.IsAdmin,
Nutzer.Name,
Nutzer.Vorname,
Nutzer.Strasse,
Nutzer.StrasseNr,
Nutzer.PLZ,
Nutzer.Ort,
Nutzer.EMail,
Nutzer.passwort
FROM
Nutzer
WHERE
Nutzer.EMail=@EMail AND Nutzer.passwort=@passwort

RETURN

 

Ich denke das wars. Jetzt werde ich dann mal die Anwendung in ASP.NET schreiben und wir sehen weiter.

 

Gruß und danke.

Mull

Share this post


Link to post

Moin,

 

okay, schön.

 

Ich hoffe allerdings, dass du diesen Beispielcode nicht verwendest. Eine Nutzerauthentisierung per "WHERE Username = Variable1 AND Password = Variable2" gilt als Bad Practice.

 

Gruß, Nils

Share this post


Link to post

Hi Nils,

dies ist nur eine Übung! Ich befasse mich jetzt seit einem Jahr mit VB.NET und natürlich brauch ich dazu auch SQL. Habe jetzt vor ca. 2 Monaten damit begonnen.

Schön wenn man weiß, das MS-Bücher "Bad Practice" verbreiten. :-)

Gruß

Mull

Share this post


Link to post

Moin,

 

Schön wenn man weiß, das MS-Bücher "Bad Practice" verbreiten. :-)

 

ich weiß jetzt nicht, in welchem Zusammenhang das da steht. Mag ja sein, dass das Thema dort noch näher beleuchtet wird. Ich bin auch kein Entwickler. Aber soweit ich weiß, bietet gerade ASP.NET sehr gute Authentisierungsfunktionen, die ohne solch eine Simpelfunktion auskommen.

 

Das aber nur am Rande. ;)

 

Gruß, Nils

Share this post


Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...