Jump to content

Gespeicherte Prozeduren


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...