저장 프로시저란 무엇인가요? 어떻게 작동하나요? 저장 프로시저의 구성은 무엇인가요(각각 저장 프로시저여야만 하는 것들)?
저장 프로시저는 몇 가지 방법으로 실행할 수 있는 SQL 문 일괄 처리입니다. 대부분의 주요 DBM은 저장 프로시저를 지원하지만, 모든 DBM이 지원하는 것은 아닙니다. 자세한 내용은 특정 DBMS 도움말 문서에서 확인해야 합니다. 제가 가장 잘 알고 있는 SQL Server를 샘플로 사용하겠습니다.
저장 프로시저를 만드는 구문은 매우 간단합니다:
CREATE PROCEDURE <owner>.<procedure name>
<param> <datatype>
AS
<Body>
예를 들어
CREATE PROCEDURE Users_GetUserInfo
@login nvarchar(30)=null
AS
SELECT * from [Users]
WHERE ISNULL(@login,login)=login
저장 프로시저의 장점은 데이터 액세스 로직을 한곳으로 중앙 집중화하여 DBA가 쉽게 최적화할 수 있다는 것입니다. 또한 저장 프로시저에 실행 권한을 부여할 수 있지만 사용자에게 기본 테이블에 대한 읽기/쓰기 권한이 필요하지 않다는 점에서 보안상의 이점도 있습니다. 이는 SQL 인젝션에 대한 좋은 첫 번째 단계입니다.
저장 프로시저에는 기본적으로 기본 CRUD 작업과 관련된 유지 관리라는 단점이 있습니다. 각 테이블에 삽입, 업데이트, 삭제 및 기본 키에 기반한 선택이 하나 이상 있다고 가정하면 각 테이블에 4개의 프로시저가 있다는 뜻입니다. 이제 400개의 테이블로 구성된 적당한 크기의 데이터베이스를 가정하면 프로시저가 1600개입니다! 물론 중복되는 프로시저가 없다고 가정했을 때입니다.
바로 이 부분에서 ORM 또는 다른 방법을 사용하여 기본 CRUD 작업을 자동으로 생성하면 많은 이점이 있습니다.
저장 프로시저는 특수 작업을 수행하는 데 사용되는 미리 컴파일된 SQL 문 집합입니다.
예제: Employee` 테이블이 있는 경우
Employee ID Name Age Mobile
---------------------------------------
001 Sidheswar 25 9938885469
002 Pritish 32 9178542436
먼저 Employee
테이블을 검색합니다:
Create Procedure Employee details
As
Begin
Select * from Employee
End
SQL Server에서 프로시저를 실행합니다:
Execute Employee details
--- (Employee details is a user defined name, give a name as you want)
그런 다음 두 번째로 Employee 테이블에 값을 삽입합니다.
Create Procedure employee_insert
(@EmployeeID int, @Name Varchar(30), @Age int, @Mobile int)
As
Begin
Insert Into Employee
Values (@EmployeeID, @Name, @Age, @Mobile)
End
SQL Server에서 매개변수화된 프로시저를 실행합니다:
Execute employee_insert 003,’xyz’,27,1234567890
--(Parameter size must be same as declared column size)
예: @Name Varchar(30)
Employee테이블에서
Name열의 크기는
varchar(30)`이어야 합니다.
저장 프로시저 만든 데이터베이스에 저장된 및 SQL 문을 그룹입니다. 저장 프로시저 는 단일 입력 매개 변수를 사용할 수 있도록 네트워크를 통해 서로 다른 입력 데이터를 사용하여 클라이언트에 여러 절차를 사용할 수 있습니다. 저장 프로시저 줄일 수 있는 네트워크 트래픽 및 성능 향상. 만약 우리가 모든 클라이언트는 저장 프로시저 수정하십시오 내려받습니다 업데이트되도록 저장 프로시저.
저장 프로시저를 만드는 샘플링합니다
CREATE PROCEDURE test_display
AS
SELECT FirstName, LastName
FROM tb_test;
EXEC test_display;
저장 프로시저 사용하는 것이 좋습니다
한 번 프로시저에서는 만들 수도 있고, 그것이 어떤 프로그램에서 횟수를 호출하십시오 데이터베이스입니까 저장한다.
많은 양의 SQL 코드를 单捞磐啊 작업이 수행되는 반복적으로 들립니다, 저장 프로시저 더 빠를 수 있습니다. 이들은 처음 실행할 때 최적화되었는지 해석되고, 그리고 나중에 사용하기 위해 메모리 캐시에 저장된 프로시저에서는 컴파일됨 버전이 있다. 즉, 저장 프로시저를 사용할 때마다 레퍼스트 필요는 없으며, 그 결과 및 레오티미스트 훨씬 빠른 실행 시간.
수백 개의 줄이 Transact-SQL 코드를 필요로 하는 작업을 수행할 수 있는 하나의 코드에서 실행하는 절차를 통해 기술서임을 보내는 것이 아니라 네트워크를 통해 수백 개의 코드 행.
사용자가 실행할 수 있는 권한을 부여 받을 수 있는 저장 프로시저를 실행할 수 있는 권한이 없는 경우에도 procedure& # 39 의 명령문입니다 직접.
Sql Server 에서 우리는 서로 다른 유형의 저장 프로시저:
시스템 저장 프로시저
사용자정의된 저장 프로시저
확장됨 저장 프로시저
예: sp_helptext [StoredProcedure_Name]
일반적으로 저장 프로시저는 'SQL 함수'입니다:
-- a name
CREATE PROCEDURE spGetPerson
-- parameters
CREATE PROCEDURE spGetPerson(@PersonID int)
-- a body
CREATE PROCEDURE spGetPerson(@PersonID int)
AS
SELECT FirstName, LastName ....
FROM People
WHERE PersonID = @PersonID
이것은 T-SQL에 초점을 맞춘 예제입니다. 저장 프로시저는 대부분의 SQL 문을 실행하고 스칼라 및 테이블 기반 값을 반환할 수 있으며 SQL 인젝션 공격을 방지하므로 더 안전한 것으로 간주됩니다.
이 같은 상황을 생각해 보면
참고:
단지 하나의 파일로 저장 프로시저 는 SQL 문에서 그룹 컴파일됨 실행 계획.
예: 저장 프로시저 만들기
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE GetEmployee
@EmployeeID int = 0
AS
BEGIN
SET NOCOUNT ON;
SELECT FirstName, LastName, BirthDate, City, Country
FROM Employees
WHERE EmployeeID = @EmployeeID
END
GO
저장 프로시저 또는 수정하십시오 변경하십시오.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE GetEmployee
@EmployeeID int = 0
AS
BEGIN
SET NOCOUNT ON;
SELECT FirstName, LastName, BirthDate, City, Country
FROM Employees
WHERE EmployeeID = @EmployeeID
END
GO
저장 프로시저 삭제하시겠습니까 드롭하거나.
DROP PROCEDURE GetEmployee
what is a 저장됩니까 procedure" "; 다른 사람이 이미 답변됨 삽입하십시오. 어떤 한 덜 알려진 방법을 사용하여 내아기마저도 post 는 저장 프로시저. 이는 '그룹짓기 저장 프로시저' 또는 '번호 저장 프로시저'.
'. 숫자 '따라 [이] (https://docs.microsoft.com/en-us/sql/t-sql/statements/create-procedure-transact-sql)
> 그룹화하려면 절차에 사용되는 선택적 정수, 같은 이름의. 이러한 방법으로 드롭합니다 기술서임을 프로시저에서는 그룹화할 절차를 함께 떨어트림 수 있습니다.
CREATE Procedure FirstTest
(
@InputA INT
)
AS
BEGIN
SELECT 'A' + CONVERT(VARCHAR(10),@InputA)
END
GO
CREATE Procedure FirstTest;2
(
@InputA INT,
@InputB INT
)
AS
BEGIN
SELECT 'A' + CONVERT(VARCHAR(10),@InputA)+ CONVERT(VARCHAR(10),@InputB)
END
GO
exec FirstTest 10
exec FirstTest;2 20,30
CREATE Procedure SecondTest;2
(
@InputA INT,
@InputB INT
)
AS
BEGIN
SELECT 'A' + CONVERT(VARCHAR(10),@InputA)+ CONVERT(VARCHAR(10),@InputB)
END
GO
>. Msg 2730, 레벨 1, 절차, 1 호선 세콘트레스트 11khz, 상태 [일괄작업 시작 3 호선]
저장 프로시저 문이 있는 한 번만 기록되었으므로 네트워크 트래픽을 줄이고, 클라이언트와 서버 간에. 또한 Sql 인젝션 공격을 피할 수 있습니다.
저장 프로시저 (dbms) 의, 집합 s # 39 는 sql 문을 통해 지정된 이름 that& 데이터베이스에 저장된 컴파일됨 양식, 에 의해 공유됨 수 있도록 다양한 프로그램을.
저장 프로시저 사용하는 데 유용할 수 있습니다
제어됩니다 제공하는 데이터 액세스 (최종 사용자가 변경할 수 있지만, 데이터를 입력하거나 can& # 39 만 쓰지 않고 절차)
데이터 무결성을 보장하기 (약간만이라도 입력된 데이터를 일관되게) 와
생산성 향상 (저장 프로시저 진술에 한 번만 쓸 필요)
예를 들어,
각 저장됩니까 프로그램에 포함된 것이 아닌 SQL 문을 이루어집니다. 이 같은 발언은 여러 명령문입니다 구분된 세미콜론 (;) 로 구성된 복합 기술서임을 될 수 있습니다. 문자를 사용할 수 있습니다.
CREATE PROCEDURE dorepeat(p1 INT)
BEGIN
SET @x = 0;
REPEAT SET @x = @x + 1; UNTIL @x > p1 END REPEAT;
END;
저장 프로시저 출력 매개 변수, SQL Server 의 입력 매개 변수를 사용할 수 있고 여러 값을 반환할 수 있습니다. sql Server 의 저장 프로시저 호출 상태 데이터베이스 작업을 수행할 수 있는 프로그램 명령문입니다 값을 반환하는 절차 또는 일괄작업.
Sql Server 의 이점은 저장 프로시저
모듈성 수 있도록 지원합니다. 그들은 허용하시겠습니까 빠른 실행. 그들은 네트워크 트래픽을 줄일 수 있습니다. 그들은 보안 메커니즘을 활용될 수 있다.
예입니다 저장됩니까 프로시저입니다 는 매개변수에서 실행하므로 쿼리하고 반품하십시오 한 결과. 특히, 저장 프로시저에 매개변수로 비즈니상티이드 받아 사용하고 있는 이 기본 키를 일치시킵니다 허먼레수르체스콜럼프로이디 표를 반품하십시오 요청되었습니다 부하예요.
> create procedure HumanResources.uspFindEmployee `*<<<---Store procedure name`*
@businessEntityID `<<<----parameter`
as
begin
SET NOCOUNT ON;
Select businessEntityId, <<<----select statement to return one employee row
NationalIdNumber,
LoginID,
JobTitle,
HireData,
From HumanResources.Employee
where businessEntityId =@businessEntityId <<<---parameter used as criteria
end
내가 배운 (essential.com.it) 에서 이 상당히 유용합니다.