대학에서는 저장 프로시저에 대해 언급한 바가 없습니다. 한동안 일했지만 저장 프로시저를 전혀 사용할 필요가 없습니다. 이는 소프트웨어 방향 때문일 수 있습니다. 향후 개발을 위해 처음부터 배우기로 결정했습니다.
저장 프로시저의 정의는 다음과 같습니다.
저장 프로시저는 특정 기능을 완료하기 위한 SQL 문 집합으로, 사용자가 지정하는 저장 프로시저입니다. 프로시저 및 지정된 매개변수(저장 프로시저가 매개변수를 사용하여 실행되는 경우)
SQL Server 시리즈 버전에서 저장 프로시저는 시스템 제공 저장 프로시저와 사용자 정의 저장 프로시저라는 두 가지 범주로 나뉩니다.
시스템 SP는 주로 마스터 데이터베이스에 저장되며 접두사 sp_가 붙습니다. 시스템 저장 프로시저는 주로 시스템 테이블에서 정보를 가져와 시스템 관리자를 위해 SQL Server를 관리합니다.
일반적으로 사용되는 시스템 저장 프로시저는 다음과 같습니다.
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;
사용자 정의 저장 프로시저는 사용자가 만들고 다음과 같은 특정 기능을 완료할 수 있습니다. 사용자.
여기에서는 저장 프로시저의 이점을 살펴봅니다.
(1) 재사용. 저장 프로시저를 재사용하여 데이터베이스 개발자의 작업량을 줄일 수 있습니다.
(2) 성능을 향상시킵니다. 저장 프로시저는 생성될 때 컴파일되므로 나중에 사용할 때 다시 컴파일할 필요가 없습니다. 일반 SQL 문은 실행될 때마다 컴파일해야 하므로 저장 프로시저를 사용하면 효율성이 향상됩니다.
(3) 네트워크 트래픽을 줄입니다. 저장 프로시저가 서버에 위치하므로 호출 시 저장 프로시저의 이름과 매개변수만 전달하면 되므로 네트워크를 통해 전송되는 데이터의 양이 줄어듭니다.
(4) 보안. 매개변수화된 저장 프로시저는 SQL 주입 공격을 방지할 수 있으며 저장 프로시저에 부여, 거부 및 취소 권한을 적용할 수 있습니다.
그럼 기본 생성 구문을 살펴보겠습니다.
定义存储过程的语法 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
SQL SERVER에서는 모든 사용자 정의 변수가 "@"로 시작하는데, OUTPUT 키워드는 이 매개변수가 출력에 사용되며 AS 다음에는 저장 프로시저의 내용이 있음을 나타냅니다. 위의 코드가 "쿼리 분석기"에서 한 번 실행되면 SQL SERVER는 현재 데이터베이스에 "UserLogin"이라는 저장 프로시저를 생성합니다. "Enterprise Manager"를 열고 현재 작업 중인 데이터베이스를 선택한 후 왼쪽 트리 목록에서 "프로그래밍 가능성 -> 저장 프로시저"를 선택하면 방금 생성한 데이터베이스가 목록에 표시됩니다. 오른쪽에 저장 프로시저가 있습니다(그렇지 않은 경우 새로 고치십시오).
또는
EXEC 매개변수 1=매개변수 값 1, 매개변수 2=매개변수 값 2....
위에서도 보았습니다.
그런 저장 프로시저를 생성하면 무슨 소용이 있나요? 데이터의 일치.
우리는 웹이나 winform 프로그램을 작업 중입니다. 로그인이 필요하다고 가정합니다. 음, 로그인을 위해 이 저장 프로시저를 호출할 수 있습니다. 전달된 매개변수에 따라 쿼리를 실행하면 이 레코드가 데이터베이스에 저장됩니다. 존재하는 경우 로그인이 성공했다는 뜻이고, 그렇지 않으면 실패했다는 의미입니다.
drop PROCEDURE UserLogin이렇게 하면 더욱 안전하고 SQL 삽입을 방지할 수 있습니다.