>php教程 >PHP开发 >SQL 저장 프로시저 시작의 기본 정보

SQL 저장 프로시저 시작의 기본 정보

高洛峰
高洛峰원래의
2016-12-14 13:44:421131검색

대학에서는 저장 프로시저에 대해 언급한 바가 없습니다. 한동안 일했지만 저장 프로시저를 전혀 사용할 필요가 없습니다. 이는 소프트웨어 방향 때문일 수 있습니다. 향후 개발을 위해 처음부터 배우기로 결정했습니다.

저장 프로시저의 정의는 다음과 같습니다.

저장 프로시저는 특정 기능을 완료하기 위한 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....

위에서도 보았습니다.

저장 프로시저를 삭제하려면 이렇게 drop

을 사용하세요.

그런 저장 프로시저를 생성하면 무슨 소용이 있나요? 데이터의 일치.

우리는 웹이나 winform 프로그램을 작업 중입니다. 로그인이 필요하다고 가정합니다. 음, 로그인을 위해 이 저장 프로시저를 호출할 수 있습니다. 전달된 매개변수에 따라 쿼리를 실행하면 이 레코드가 데이터베이스에 저장됩니다. 존재하는 경우 로그인이 성공했다는 뜻이고, 그렇지 않으면 실패했다는 의미입니다.

drop PROCEDURE UserLogin
이렇게 하면 더욱 안전하고 SQL 삽입을 방지할 수 있습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.