저장 프로세스, 사용자 정의 함수, 보기 문법

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 트리거의 종류:
  • 삽입형 트리거
  • 삭제형 트리거
  • 더 새로운 트리거는 한 표에서 여러 종류의 트리거를 정의할 수 있다
  • 4. 트리거의 작동 원리:
    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 트리거 이름 on 테이블 이름 for delete/insert/update as 트리거가 실행할 동작
  • 삽입형 트리거 만들기: -users표에서 트리거를 정의하고 기록을 삽입할 때 메시지를 팝업합니다:users표에 기록을 삽입했습니다!

  • create trigger t_users on users for insert as print'users 테이블에 레코드가 삽입되었습니다'Go
  • Delete 트리거 만들기:users표에서 트리거를 정의하고 기록을 삭제할 때 팝업 메시지:users표에서 기록을 삭제했습니다!

  • create trigger t_users on users for delete as print'이 데이터를 삭제했습니다'go
  • Updata 트리거 만들기: xs표에서 데이터를 업데이트하면 실행할 때 알림 정보를 표시합니다.

  • create trigger tr_업데이트 온 users for 업데이트 as print'이 데이터를 업데이트했습니다!'        go
  • 트리거 수정, 삭제: 수정 문법:alter trigger 트리거 이름 on 테이블 이름 for delete/insert/update as 트리거가 실행할 작업 삭제 문법:drop trigger 트리거 이름
  • 트리거 비활성화, 활성화: 비활성화 문법: Alter table 테이블 이름 disable trigger 트리거 이름 활성화 문법: Alter table 테이블 이름 enable trigger 트리거 이름
  • 트리거를 사용할 때 고려해야 할 요소: 우선 제약을 검사한다.만약 트리거 테이블에 제약이 존재한다면, 제약은 트리거가 실행되기 전에 검사합니다.제약을 위반하면 트리거는 실행되지 않습니다.어떤 동작이든 여러 개의 트리거가 있을 수 있다.한 테이블에 몇 개의 트리거를 끼워 넣는 것을 허용합니다.하나의 시계는 여러 개의 트리거를 정의할 수 있다.트리거마다 하나 또는 몇 개의 동작을 정의할 수 있습니다
  • 좋은 웹페이지 즐겨찾기