Heim > php教程 > PHP开发 > Hauptteil

Informationen zu den Grundlagen der ersten Schritte mit gespeicherten SQL-Prozeduren

高洛峰
Freigeben: 2016-12-14 13:44:42
Original
1110 Leute haben es durchsucht

Im College wird nichts über gespeicherte Prozeduren erwähnt. Ich habe immer noch keine Verwendung für gespeicherte Prozeduren. Dies kann an der Richtung der Software liegen. Für die zukünftige Entwicklung habe ich beschlossen, von Grund auf zu lernen.

Hier ist die Definition einer gespeicherten Prozedur

Eine gespeicherte Prozedur ist eine Reihe von SQL-Anweisungen zum Ausführen bestimmter Funktionen. Sie wird kompiliert und in der Datenbank gespeichert Prozedur und gegebene Parameter, wenn die gespeicherte Prozedur mit Parametern ausgeführt wird.

In den Serienversionen von SQL Server werden gespeicherte Prozeduren in zwei Kategorien unterteilt: vom System bereitgestellte gespeicherte Prozeduren und benutzerdefinierte gespeicherte Prozeduren.

System SP wird hauptsächlich in der Master-Datenbank gespeichert und mit dem Präfix sp_ versehen. Die gespeicherte Systemprozedur ruft hauptsächlich Informationen aus Systemtabellen ab und verwaltet so SQL Server für Systemadministratoren.

Häufig verwendete gespeicherte Systemprozeduren sind:

exec sp_databases; --查看数据库
exec sp_tables;        --查看表
exec sp_columns student;--查看列
exec sp_helpIndex student;--查看索引
exec sp_helpConstraint student;--约束
exec sp_stored_procedures;
exec sp_helptext 'sp_stored_procedures';--查看存储过程创建、定义语句
exec sp_rename student, stuInfo;--修改表、索引、列的名称
exec sp_renamedb myTempDB, myDB;--更改数据库名称
exec sp_defaultdb 'master', 'myDB';--更改登录名的默认数据库
exec sp_helpdb;--数据库帮助,查询数据库信息
exec sp_helpdb master;
Nach dem Login kopieren

Benutzerdefinierte gespeicherte Prozeduren werden von Benutzern erstellt und können eine bestimmte Funktion ausführen, z. B. gespeicherte Prozeduren, die die von ihnen benötigten Dateninformationen abfragen der Benutzer.

Hier betrachten wir die Vorteile gespeicherter Prozeduren

(1) Wiederverwendung. Gespeicherte Prozeduren können wiederverwendet werden, wodurch die Arbeitsbelastung der Datenbankentwickler verringert wird.

(2) Leistung verbessern. Gespeicherte Prozeduren werden bei ihrer Erstellung kompiliert und müssen bei zukünftiger Verwendung nicht erneut kompiliert werden. Allgemeine SQL-Anweisungen müssen bei jeder Ausführung kompiliert werden, sodass die Verwendung gespeicherter Prozeduren die Effizienz verbessert.

(3) Reduzieren Sie den Netzwerkverkehr. Die gespeicherte Prozedur befindet sich auf dem Server. Beim Aufruf müssen Sie nur den Namen und die Parameter der gespeicherten Prozedur übergeben, wodurch die über das Netzwerk übertragene Datenmenge reduziert wird.

(4) Sicherheit. Parametrisierte gespeicherte Prozeduren können SQL-Injection-Angriffe verhindern, und auf gespeicherte Prozeduren können Berechtigungen zum Gewähren, Verweigern und Widerrufen angewendet werden.

Okay, werfen wir einen Blick auf die grundlegende Syntax der Erstellung

定义存储过程的语法
    CREATE  PROC[EDURE]  存储过程名
              @参数1  数据类型 = 默认值,
               …… ,
              @参数n  数据类型 OUTPUT
            AS
            SQL语句
    GO
,参数是可选的
,参数分为输入参数、输出参数
,输入参数允许有默认值
  这里来创建一个简单的存储过程
 
CREATE PROCEDURE UserLogin
@name varchar(20),
@password varchar(20)
AS
-- 定义一个临时用来保存密码的变量
--DECLARE @strPwd NVARCHAR(20) 这里先不介绍变量。稍后的文章会详细讲到
BEGIN
select * from userinfo where userName=@name and userPass=@password
END
GO
首先我们用简单的sql查询
select * from userinfo where userName='admin'
查询结果:
---------------------
UserName  UserPass
Admin      Admin
现在我们来执行我们的存储过程
exec UserLogin admin,admin
--或这样调用:
EXEC UserLogin @name='admin',@password='admin'
查询结果:
---------------------
UserName  UserPass
Admin      Admin
Nach dem Login kopieren

Beachten Sie, dass in SQL SERVER alle benutzerdefinierten Variablen mit „@“ beginnen. Das Schlüsselwort OUTPUT gibt an, dass dieser Parameter für die Ausgabe verwendet wird, und nach AS steht der Inhalt der gespeicherten Prozedur. Solange der obige Code einmal im „Query Analyzer“ ausgeführt wird, erstellt SQL SERVER eine gespeicherte Prozedur mit dem Namen „UserLogin“ in der aktuellen Datenbank. Sie können „Enterprise Manager“ öffnen, die Datenbank auswählen, mit der Sie gerade arbeiten, und dann in der Baumliste auf der linken Seite „Programmierbarkeit->Gespeicherte Prozeduren“ auswählen. Zu diesem Zeitpunkt können Sie die gerade erstellte Datenbank in der Liste sehen Auf der rechten Seite befindet sich die gespeicherte Prozedur (falls nicht, aktualisieren Sie sie einfach).

Ich habe gesehen, dass es zwei Möglichkeiten gibt, gespeicherte Prozeduren in Daten aufzurufen (EXEC und EXECUTE sind hier gleichwertig);

EXEC-Prozessname Parameterwert 1, Parameterwert 2,...


oder

EXEC-Parameter 1=Parameterwert 1, Parameter 2=Parameterwert 2....

Wir haben es auch oben gesehen.

Wenn Sie eine gespeicherte Prozedur löschen möchten, verwenden Sie drop

wie folgt

drop PROCEDURE UserLogin
Nach dem Login kopieren

Was nützt es, eine solche gespeicherte Prozedur zu erstellen? Sehen Sie sich die Übereinstimmung in den Daten an.

Wir arbeiten an einem Web- oder Winform-Programm. Nun, wir können diese gespeicherte Prozedur aufrufen, um uns anzumelden. Gemäß den übergebenen Parametern, wenn in der Abfrage ein Datensatz vorhanden ist , dann befindet sich dieser Datensatz in der Datenbank. Wenn er vorhanden ist, bedeutet dies, dass die Anmeldung erfolgreich war, andernfalls schlägt sie fehl.

Dies ist sicherer und kann SQL-Injection verhindern.


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!