728x90
반응형
728x90

프로젝트를 진행하다보니

프로시저 내에서 씨리얼하게 값을 증가시켜 데이터를 저장해야 하는일이 생겼다

프로시저내에서 전역변수를 선언할수는 없고

테이블을 하나 만들어서 컬럼을 identity 열로 지정하여 가져올까도 했지만 Transaction 이 발생되서 ... GG

코딩상으로는 전역변수 int 하나 만들어놓고 ++ 시키면 되는데

SQL 은 그런 기능이 없나 하다가 찾게된 기능

코딩상에서 전역변수를 사용하는것과 비슷하다.

 

시퀀스 하나 만들고 (SQL 2012 에서만 지원된다.)

-----------------------------------------

CREATE SEQUENCE TESTIDX AS INT
START WITH 1 -- 시작수
INCREMENT BY 1 -- 증가수

-----------------------------------------

 

프로시저내에서 아래와 같이 활용하면 된다.

-----------------------------------------

NEXT VALUE FOR TESTIDX

-----------------------------------------

 

SEQUENCE 는 지정숫자부터 증가하게하거나 초기화 및 띄어넘기가 가능하다

반응형
728x90

MS_SQL 교육용으로 사용 시 

DB 작업 스케줄을 걸수 없는 상태에서 사용하는 SP_RUN

SP_RUN_실행파일.zip
1.98MB

반응형
728x90

PBCLTRT100.msi
7.98MB

powerbuilder accessibility error 해결방법

윈도우8에는 powerbuilder accessibility error가 발생한다.

PBACC105.DLL를 설치 후 해결이 되었다.


반응형
728x90

회사에서 파워빌더로 프로그래밍을 하다보면 파워빌더를 실행해서 특정 오브젝트나 윈도우를 열면 아무런 이유없이 응답없음으로 변경되다가 다운될 때가 있다.

이 때 열려고 하는 오브젝트나 워크스페이스에 문제가 있는 것으로 아래와 같이 조치를 해주면 된다.

1. DataWindow 및 특정 오브젝트를 열면 다운됨.

  '실행' 에서  regedit 입력하여 레지스트리 편집기 실행

HKEY_CURRENT_USER - Software -Sysbase - PowerBuilder - Layout -Default - 열리지 않는 오브젝트 삭제

2. 파워빌더를 실행함과 동시에 다운됨.

  '실행' 에서  regedit 입력하여 레지스트리 편집기 실행

HKEY_CURRENT_USER - Software -Sysbase - PowerBuilder - Workspace - 다운되는 workspace 를 삭제

파워빌더를 실행해서 workspace를 다시 열면 됨.

 

반응형
728x90

데이타와 그 구조 정의 = 데이타 정의어
 
존재하는 테이블과 같은 구조의 테이블 새로 만들기(데이타 이동 미포함)
 
방법1
CREATE TABLE TABLE1 AS (SELECT * FROM TABLE2) WITH NO DATA;

방법2
CREATE TABLE TABLE1 LIKE TABLE2;
 
※ 방법1, 2는 테이블의 구조만 복사되고 제약조건은 복사되지 않는다.
※ 방법1,2 는 테이블내의 데이타는 복사되지 않는다. 이부분은 알아내는 중이다.
 
존재하는 테이블과 같은 구조의 테이블 새로 만들기 (데이타 이동 포함)
 
1. CREATE TABLE TABLE1 LIKE TABLE2;
2. INSERT INTO TABLE1 SELECT * FROM TABLE2;
 
※ 테이블을 복사할때 제약조건은 복사되지 않는다.
 
※ DB2에는 오라클의 "CREATE TABLE AS SELECT" 같은 명령이 없다.


반응형
728x90


[MSSQL 참조키(Foreign Key) 설정하기]

참조키(외래키)는 데이타의 참조 무결성을 유지하기 위한 필수 조건으로 아래와 같은 특성을 가집니다.

[ 참조키의 특성 ]


1. 참조되는 테이블의 PRIMARY KEY나 UNIQUE 제약 또는 UNIQUE INDEX가 지정된 컬럼만을 참조할 수 있습니다. 
2. 참조키를 만들어도 자동적으로 색인이 만들어 지지 않습니다. 색인이 필요하면 직접만들어 써야  
   하며, 조인에 참여하는 참조키는 쿼리 속도를 고려한다면 색인을 만들어 두는것이 좋습니다. 
3. 참조키는 참조되는 테이블의 여러 컬럼을 참조할 수 있습니다. 간단히 말하면 참조되는 테이블에서 여러 컬럼이 
   모인 복합키(COMPOSITE KEY)가 사용되고 이를 참조한다면 너무나 당연한 것이겠죠?  
4. 참조키가 설정되면 실수로 데이타를 삭제하거나 변경하는 것을 방지할 수 있습니다. 
참조키를 정의하는 기본형식은 아래와 같습니다. 
[CONSTRAINT constraint_name] 
    [FOREIGN KEY] [(column[,...n])] 
    REFERENCES ref_table [(ref_column[,...n])] 
    [ON DELETE { CASCADE | NO ACTION } ] 
    [ON UPDATE { CASCADE | NO ACTION } ] 

constraint_name : 제약조건의 이름으로 데이타베이스 내에서 유일해야 합니다.

ref_table           : 참조되는 테이블 이름입니다.

ref_column        : 참조되는 컬럼또는 컬럼들입니다.

NO ACTION       : 참조되는 테이블의 행이 삭제 또는 수정되었을 경우 SQLServer에서는 오류 메시지를 띄우고, 

                        해당 작업은 롤백(RollBack)됩니다.


CASCADE           : 참조되는 테이블의 행이 삭제 또는 수정되었을 경우 이를 참조하는 테이블에서 

                         자동으로 변경되도록 설정하는 옵션입니다. 옵션을 지정하지 않으면 디폴트는 NO ACTION 입니다.

반응형
728x90

MSSQL 날짜 구하는 방법

아 ..ㅋㅋ이것도 필요 이거는 조회 및 날짜에 대한 계산을 사용할때 필요한 쿼리 

나는 이런것으로 돈을 번다.ㅋㅋㅋ

/*************************************************************

1. 테이블을 생성하면서 테이블의 데이타 복사
select * into 생성될테이블명 from 원본테이블명

/*************************************************************

2. 테이블 구조만 복사하겠다면
select * into 생성될테이블명 from 원본테이블명 where 1=2 /*************************************************************

3. 테이블이 이미 생성되어 있는경우 데이타만 복사
insert into 카피될테이블명 select * from 원본테이블명
/*************************************************************

4.특정 데이타만 복사 하겠다면
insert into 카피될테이블명 select * from 원본테이블명 where 검색조건
/*************************************************************

5.다른 테이블조인해서 UPDATE 하기
UPDATE 엡데이트 테이블 명
SET 업테이트할 컬럼 = 업데이트 가져오는 컬럼
FROM 엡데이트 테이블 명 A, 다른테이블 명 B 
WHERE 조인조건

/**************************************************************


6. 프로시저 검색 
SELECT * FROM INFORMATION_SCHEMA.ROUTINES

/*************************************************************

반응형

+ Recent posts