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

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...