저장 프로세스, 사용자 정의 함수, 보기 문법
6021 단어 SQLSERVER 데이터베이스 작업
1. 저장 프로세스
1. 저장 프로세스의 메인 프레임워크
drop proc SP_TRAACC_DERTOOLCPTRADE ;
CREATE procedure dbo.SP_TRAACC_DERTOOLCPTRADE(
@etldate varchar(20)
)
AS
/**------- ---------------------------------*/
DECLARE @v_prcname VARCHAR(100) = 'SP_TRAACC_DERTOOLCPTRADE'; --
DECLARE @v_step VARCHAR(200) = '1'; --
DECLARE @v_date VARCHAR(10); --
DECLARE @start_time VARCHAR(10); --
DECLARE @return_code VARCHAR(100); --
DECLARE @rtcode varchar(4) = '0';
BEGIN
begin TRAN
BEGIN try
SELECT @start_time=CONVERT(varchar,getdate(),24);
SELECT @v_date=CONVERT(varchar,@etldate,112);
delete from LES_GC_CpProcParaInfo where datadate = @etldate;
COMMIT TRAN;
set @rtcode = '0';
set @return_code ='Success';
end try
/*************************** , ************************************************/
begin catch
IF(@@ERROR <> 0)
set @rtcode = @@ERROR;
rollback TRAN;
--RETURN
end catch
return @rtcode
END
2. 저장 프로세스의 문법
2.1 변수의 선언 변수에 대한 설명: 선언 변수에 @ 기호 DECLARE @I INT 변수의 값을 입력해야 합니다. 변수 선언 변수에 set set @rtcode ='0'을 입력하여 여러 변수를 선언해야 합니다. DECLARE @s varchar(10), @a INT 2.2.변수의 할당 값 사용 select 문장 할당 상수 값 select @user1 = '장삼' 조회 할당: SELECT @starttime=CONVERT(varchar, getdate(), 24 업데이트 문을 사용하여 값을 지정하는 업데이트 STUser set @user3 = Name where ID=1 2.3.변수 인쇄 변수 인쇄 print@a 2.4 순환 문장 while @a<=100 begin set @sum+=@a set @a+=1 end 2.5 조건문: if (1+1=2) begin print'옳은'end else begin print'잘못'end 2.6 when then 조건 분기 set @week=case when @case whek @case when @case when @ when @ when @tay when @today @ today = 1 then'월요일'when @ today @ today =2 then'화요일'else'값 오류'endse'잘못'end'end'잘못'end'en@ERROR;rollback TRAN; end catch
2. 사용자 정의 함수
1. 함수 쓰기 참조 사용자 정의:
CREATE FUNCTION dbo.Test(
@var1 AS DECIMAL(38,10)
)
RETURNS DECIMAL(38,10)
AS
BEGIN
DECLARE @var2 DECIMAL(38,10)
if @var1 >6
set @var2 = 1;
else
set @var2 = 0 ;
return @var2
END
2. 표준 정적 분포 함수의 실현
CREATE FUNCTION dbo.NormSDist(
@var1 AS DECIMAL(38,10)
)
RETURNS DECIMAL(38,10)
AS
BEGIN
DECLARE @var2 DECIMAL(38,10)
DECLARE @gamma DECIMAL(38,10)
DECLARE @a1 DECIMAL(38,10)
DECLARE @a2 DECIMAL(38,10)
DECLARE @a3 DECIMAL(38,10)
DECLARE @a4 DECIMAL(38,10)
DECLARE @a5 DECIMAL(38,10)
DECLARE @x DECIMAL(38,10)
DECLARE @t DECIMAL(38,10)
DECLARE @n DECIMAL(38,10)
if @var1 >6
set @var2 = 1;
if @var1 3. 커서
커서(cursor)는 시스템이 사용자에게 개설한 데이터 버퍼로 SQL 문장의 실행 결과를 저장합니다.커서는 실제적으로 여러 개의 데이터 기록을 포함하는 결과에서 매번 한 개의 기록을 집중적으로 추출할 수 있는 메커니즘이다.백화문으로 말하자면, 만약 우리가 조회 결과가 집중된 모든 기록을 조작할 때 커서를 사용해야 한다면.구체적인 코드 사례는 다음과 같다. - 커서 declare my 만들기cursor cursor for --my_cursor는 커서의 이름입니다. select id,name from myuser - 이것은 커서 mycursor의 값, 여기에서 마음대로 업무 장면을 보기 - 커서 오픈 my 열기cursor - 할 말이 없습니다 - 변수 declare @id int - 변수'declare'변수'@name'변수 이름 뒤에 변수 형식 declare @name varchar(50) - 여기는 두 변수가 커서를 수신하는 값입니다 - 순환 커서fetch next from mycursor into @id, @name - my 가져오기cursor의 다음 데이터입니다. 두 필드에 각각 @id, @name while @@FETCHSTATUS=0 - 데이터를 검색하여 Begin print(@name) - print() 인쇄 변수를 임의로 select * from myuser where id=@id --여기는 구체적인 업무입니다. 마음대로 하세요.저는 또 한 번의 검색을 실행했습니다fetch next from mycursor into @id, @name - 다음 데이터를 가져와 변수에 값을 부여합니다 end - 커서 해제close mycursor deallocate my_커서--커서 파괴
트리거
1. 트리거의 개념:
트리거는 특정한 테이블에 분배되는 특수한 저장 과정이다.이 테이블에 삽입, 업데이트 또는 삭제 작업을 할 때 트리거를 자동으로 호출하여 트리거에 규정된 작업을 수행합니다.트리거는 데이터의 완전성과 일치성을 확보하는 기본적인 효과적인 방법이다.시계와 관련되어 시계의 일부분으로 볼 수 있다.직접 인용할 수 없습니다. insert/update/delete를 통해 자동으로 활성화됩니다.사무 메커니즘에 속한다.같은 유형의 트리거는 표에 여러 개가 있을 수 있다
2. 트리거의 특징:
사용자 매개 변수를 받아들이지 않고 사용자 매개 변수를 되돌려주지 않습니다.이벤트 구동, 자동 호출;표에 저장하다.데이터베이스에 있는 관련 테이블을 단계적으로 업데이트하고 삭제합니다. Check 제약보다 더 복잡한 데이터 완전성을 강제합니다.다른 표의 열을 인용할 수 있습니다.
3 트리거의 종류:
SQL Server는 inserted 테이블과 deleted 테이블 두 개의 전용 테이블을 만듭니다.이것은 두 개의 논리 테이블로 시스템이 관리하고 사용자가 직접 이 두 테이블을 수정하는 것을 허락하지 않는다.그것들은 데이터베이스에 저장되지 않고 메모리에 저장된다.이 두 표의 구조는 항상 이 촉발기에 의해 작용하는 표의 구조와 같다.Inserted: INSERT 또는 UPDATE 문의 실행으로 인해 이 터치 발표에 추가할 모든 새 줄을 저장합니다.즉, 테이블의 새 줄 값을 삽입하거나 업데이트하는 데 사용되며, 테이블을 삽입하거나 업데이트하는 동시에 그 사본을 insterted 테이블에 저장합니다.따라서 insterted 테이블의 줄은 항상 터치 발표의 새 줄과 같습니다.deleted: deleted는 DELETE나 UPDATE 문장의 실행으로 인해 이 터치 발표에서 삭제할 모든 줄을 저장합니다.터치 발표에서 삭제하거나 업데이트할 옛 줄을 deleted 테이블로 옮기는 것이다.따라서 deleted 테이블과 터치 발표는 같은 줄이 없습니다.
5 트리거의 작동 방식:
그것들은 데이터베이스에 저장되지 않고 메모리에 저장된다.테이블에 데이터를 삽입할 때, insert 트리거는 실행을 촉발하고, 새로운 기록은 트리거 테이블과 inserted 테이블에 삽입됩니다.delete 트리거를 터치할 때 삭제된 테이블 기록을 deleted 테이블에 저장합니다.하나의 기록을 수정하는 것은 새로운 기록을 삽입하는 것과 같으며, 동시에 낡은 기록을 삭제하는 것과 같다. 표의 원시 기록은 deleted에 있고, 수정된 기록은 inserted표에 삽입된다.
6 트리거 생성:
create trigger t_users on users for insert as print'users 테이블에 레코드가 삽입되었습니다'Go
create trigger t_users on users for delete as print'이 데이터를 삭제했습니다'go
create trigger tr_업데이트 온 users for 업데이트 as print'이 데이터를 업데이트했습니다!' go