ISNULL
: 식이 Null인지 여부에 따라 부울 결과를 반환합니다.
Null 값이 포함되어 있을 경우 TRUE를 반환합니다.

-- =================================================
-- Author: 김홍완
-- Create date: 2009-01-22
-- Description: 표준 SELECT
-- EXEC SP_COMMON_SELECT '테이블명','출력개수','필드명','조건절','정렬값','그룹값'
-- =================================================

CREATE PROCEDURE [DBO].[SP_COMMON_SELECT]

@tableName varchar(32) -- 테이블명
, @top varchar(16)=NULL -- 출력개수
, @field varchar(512)='*' -- 필드명
, @strWhere varchar(512)=NULL -- 조건값
, @strOrder varchar(512)=NULL -- 정렬값
, @strGroup varchar(128)=NULL -- 그룹값

AS

BEGIN
SET NOCOUNT ON;

DECLARE @QueryStr varchar(8000) -- 쿼리문
IF @TOP = ''
SET @TOP = NULL
IF @field = ''
SET @field = NULL
IF @strWhere = ''
SET @strWhere = NULL
IF @strOrder = ''
SET @strOrder = NULL
IF @strGroup = ''
SET @strGroup = NULL

SET @QueryStr = 'SELECT '+ ISNULL(' TOP ' + @top,' ') + ISNULL( ' ' + @field, ' * ') +' FROM '+ @tableName
+ ISNULL(' WHERE '+@strWhere,' ')
+ ISNULL(' ORDER BY '+ @strOrder,' ')
+ ISNULL(' GROUP BY '+ @strGroup,' ')


-- PRINT @QueryStr
EXEC(@QueryStr)

END
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/22 16:08 2009/01/22 16:08
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3924

[MS-SQL] UPDATE ... CASE ...

UPDATE를 사용하여 테이블에 대해 상당히 복잡한 수정 작업을 해야 할 경우,
CASE 수식을 사용할 수 있다.

즉, 난해한 함수들과 제어문을 사용하여 개별적으로 UPDATE를 실행시켜야 되는 상황에서, 간단히 CASE 를 사용하여 프로그램 로직을 내장시킬 수 있다.

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

SELECT TITLE_ID, TYPE, PRICE, FROM TITLES

UPDATE TITLES SET
PRICE = PRICE * CASE TITLE
   WHEN 'business' THEN 1.5
   WHEN 'mod_cook' THEN .8
   WHEN 'trad_cook' THEN .6
   WHEN 'psychology' THEN .5
   WHEN 'popular_comp' THEN 1.75
   ELSE .75

-------------------------------------------------------
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/22 14:41 2009/01/22 14:41
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3923

[MS-SQL] @@SERVERNAME , @@SERVICENAME

@@SERVERNAME(Transact-SQL)

SQL Server 를 실행하는 로컬 서버의 이름을 반환합니다.

구문

@@SERVERNAME


주의
SQL Server 설치 프로그램은 설치 중에 서버 이름을 컴퓨터 이름으로 설정합니다. sp_addserver를 사용하여 @@SERVERNAME을 변경한 다음, SQL Server를 다시 시작하십시오. 그러나 항상 이 방법을 사용해야 하는 것은 아닙니다.

여러 SQL Server 인스턴스가 설치되어 있는 경우 로컬 서버 이름이 설치 후 변경되지 않으면 @@SERVERNAME은 다음 로컬 서버 이름 정보를 반환합니다.

인스턴스 서버 정보
기본 인스턴스 - 'servername'

명명된 인스턴스 - 'servername\instancename'

가상 서버 - 기본 인스턴스 - 'virtualservername'

가상 서버 - 명명된 인스턴스 - 'virtualservername\instancename'


@@SERVERNAME 함수와 SERVERPROPERTY 함수의 SERVERNAME 속성이 비슷한 형식의 문자열을 반환하더라도 정보는 다를 수 있습니다. SERVERNAME 속성은 컴퓨터의 네트워크 이름 변경을 자동으로 보고합니다.

이와 달리 @@SERVERNAME은 이런 변경을 보고하지 않습니다. @@SERVERNAME은 sp_addserver 또는 sp_dropserver 저장 프로시저를 사용하여 로컬 서버 이름 변경을 보고합니다.

반환 유형
nvarchar


다음 예에서는 @@SERVERNAME의 사용법을 보여 줍니다.

------------------------------------------------------------------------------------------
SELECT @@SERVERNAME AS 'Server Name'


결과 집합 예는 다음과 같습니다.

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

Server Name
---------------------------------
ACCTG

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





@@SERVICENAME(Transact-SQL)


SQL Server 가 실행되고 있는 레지스트리 키의 이름을 반환합니다. @@SERVICENAME은 현재 인스턴스가 기본 인스턴스인 경우에는 'MSSQLSERVER'를 반환하고 현재 인스턴스가 명명된 인스턴스인 경우에는 인스턴스 이름을 반환합니다.

구문


//=========================================================================================

@@SERVICENAME


주의
SQL Server 는 Windows NT에서 MSSQLServer라는 서비스로 실행됩니다. Windows 98에서는 서비스를 지원하지 않으므로 서비스로 실행되지 않습니다.

반환 유형
nvarchar


다음 예에서는 @@SERVICENAME의 사용법을 보여 줍니다.


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

SELECT @@SERVICENAME AS 'Service Name'

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


결과 집합은 다음과 같습니다.

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

Service Name
------------------------------
MSSQLSERVER

------------------------------------------------------------------------------------------
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/22 11:57 2009/01/22 11:57
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3922

[MS-SQL] @@IDENTITY(Transact-SQL)

@@IDENTITY(Transact-SQL)

마지막으로 삽입된 ID 값을 반환하는 시스템 함수입니다.

Transact-SQL 구문 표기 규칙

구문

@@IDENTITY


주의
INSERT, SELECT INTO 또는 대량 복사 문이 완료된 후 @@IDENTITY에는 문에 의해 생성된 마지막 ID 값이 들어 있습니다. 문이 ID 열이 있는 테이블에 영향을 주지 않은 경우에 @@IDENTITY는 NULL을 반환합니다. 여러 행이 삽입되어 여러 ID 값이 생성되면 @@IDENTITY는 마지막으로 생성된 ID 값을 반환합니다. 문이 ID 값을 생성하는 삽입 작업을 수행하는 트리거를 하나 이상 실행하는 경우 문 바로 다음에 @@IDENTITY를 호출하면 트리거로 생성된 마지막 ID 값이 반환됩니다. ID 열이 있는 테이블에 대한 삽입 작업 후에 트리거가 실행되었고 이 트리거가 ID 열이 없는 다른 테이블에 삽입을 수행하는 경우 @@IDENTITY는 첫 번째 삽입의 ID 값을 반환합니다. INSERT나 SELECT INTO 문 또는 대량 복사가 실패했거나 트랜잭션이 롤백된 경우 @@IDENTITY 값은 이전 설정으로 되돌아가지 않습니다.

문 및 트랜잭션이 실패하면 테이블의 현재 ID가 변경되고 ID 열 값 간에 간격이 생성될 수 있습니다. 테이블에 값을 삽입하려고 시도한 트랜잭션이 커밋되지 않아도 ID 값은 롤백되지 않습니다. 예를 들어 IGNORE_DUP_KEY 위반으로 인해 INSERT 문이 실패할 경우 테이블의 현재 ID 값은 여전히 증가합니다.

@@IDENTITY, SCOPE_IDENTITY 및 IDENT_CURRENT는 모두 테이블의 IDENTITY 열에 삽입된 마지막 값을 반환한다는 점에서 서로 비슷한 함수입니다.

@@IDENTITY와 SCOPE_IDENTITY는 현재 세션의 테이블에서 생성된 마지막 ID 값을 반환합니다. 그러나 SCOPE_IDENTITY는 현재 범위 내에서만 값을 반환합니다. @@IDENTITY는 특정 범위로 제한되지 않습니다.

IDENT_CURRENT는 범위 및 세션으로 제한되지 않고 지정된 테이블로 제한됩니다. IDENT_CURRENT는 모든 세션과 범위에 있는 특정 테이블에 생성된 ID 값을 반환합니다. 자세한 내용은 IDENT_CURRENT(Transact-SQL)를 참조하십시오.

@@IDENTITY 함수의 범위는 이 함수를 실행 중인 로컬 서버의 현재 세션입니다. 이 함수는 원격 서버 또는 연결된 서버에 적용할 수 없습니다. 다른 서버의 ID 값을 가져오려면 해당 원격 서버 또는 연결된 서버에서 저장 프로시저를 실행하고 이 저장 프로시저(원격 서버 또는 연결된 서버의 컨텍스트에서 실행 중)에서 ID 값을 수집하여 로컬 서버의 호출 연결에 반환하도록 합니다.

반환 형식
numeric


다음 예에서는 ID 열(LocationID)이 있는 테이블에 행을 삽입하고 @@IDENTITY를 사용하여 새 행에 사용된 ID 값을 표시합니다.


------------------------------------------------------------------------------------------
USE AdventureWorks;
GO
--Display the value of LocationID in the last row in the table.
SELECT MAX(LocationID) FROM Production.Location;
GO
INSERT INTO Production.Location (Name, CostRate, Availability, ModifiedDate)
VALUES ('Damaged Goods', 5, 2.5, GETDATE());
GO
SELECT @@IDENTITY AS 'Identity';
GO
--Display the value of LocationID of the newly inserted row.
SELECT MAX(LocationID) FROM Production.Location;
GO
------------------------------------------------------------------------------------------


참고 항목
참조
시스템 함수(Transact-SQL)
CREATE TABLE(Transact-SQL)
IDENT_CURRENT(Transact-SQL)
INSERT(Transact-SQL)
SCOPE_IDENTITY(Transact-SQL)
SELECT(Transact-SQL)
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/22 11:56 2009/01/22 11:56
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3921

SET ROWCOUNT (Transact-SQL)

지정한 행 수가 반환된 후 SQL Server 가 쿼리 처리를 중지하도록 합니다.

구문

SET ROWCOUNT { number | @number_var }

주의
중요:
SQL Server 의 다음 버전에서는 SET ROWCOUNT 옵션을 사용해도 DELETE, INSERT 및 UPDATE 문에 영향을 주지 않습니다. 새 개발 작업에서는 SET ROWCOUNT 옵션을 DELETE, INSERT 및 UPDATE 문과 함께 사용하지 말고, 현재 이 옵션을 사용하는 응용 프로그램을 수정하십시오. 또한 현재 SET ROWCOUNT 옵션을 사용하는 DELETE, INSERT 및 UPDATE 문은 TOP 구문을 사용하여 다시 작성하는 것이 좋습니다. 자세한 내용은 DELETE(Transact-SQL), INSERT(Transact-SQL) 또는 UPDATE(Transact-SQL)를 참조하십시오.



원격 테이블 및 로컬 분할 뷰와 원격 분할 뷰에 대한 INSERT, UPDATE, DELETE 문에 대해서는 SET ROWCOUNT 옵션 설정이 무시됩니다.

모든 행이 반환될 수 있도록 이 옵션을 해제하려면 SET ROWCOUNT 0을 지정하십시오.

참고:
SET ROWCOUNT 옵션을 지정하면 대부분의 Transact-SQL 문이 지정한 행 수에 영향을 받게 될 때 처리를 중지합니다. 트리거 및 INSERT, UPDATE, DELETE와 같은 데이터 수정 문이 이에 포함됩니다. ROWCOUNT 옵션은 동적 커서에는 영향을 주지 않지만 키 집합 및 INSENSITIVE 커서의 행 집합을 제한합니다. 이 옵션을 사용할 때는 주의를 기울여야 하며 기본적으로 SELECT 문과 함께 사용해야 합니다.



SET ROWCOUNT 옵션은 행 개수가 더 작은 값일 경우 SELECT 문의 TOP 키워드보다 우선 적용됩니다.

INSERT, UPDATE 및 DELETE 문에서는 명시적인 TOP 식이 동일한 문에 사용될 경우 SET ROWCOUNT 옵션을 무시합니다. 여기에는 INSERT 뒤에 SELECT 절이 오는 문이 포함됩니다.

SET ROWCOUNT 옵션은 실행 시간 또는 런타임에 설정되며, 구문 분석 시에는 설정되지 않습니다.

인수

------------------------------------------------------------------------------------------
number | @number_var
------------------------------------------------------------------------------------------

특정 쿼리를 중지하기 전에 처리된 행의 수(정수)입니다.

사용 권한
public 역할의 멤버 자격이 필요합니다.


SET ROWCOUNT는 지정한 행 수 이후에는 처리를 중지합니다. 다음 예에서는 545개 행이 300보다 작은 Quantity 조건과 일치합니다. 그러나 업데이트를 통해 반환된 행 수를 보면 일부 행이 처리되지 않은 것을 알 수 있습니다. ROWCOUNT는 모든 Transact-SQL 문에 영향을 줍니다.


------------------------------------------------------------------------------------------
USE AdventureWorks;
GO
SELECT count(*) AS Count
FROM Production.ProductInventory
WHERE Quantity < 300;
GO
------------------------------------------------------------------------------------------


결과 집합은 다음과 같습니다.


------------------------------------------------------------------------------------------
Count
-----------
537

(1 row(s) affected)
------------------------------------------------------------------------------------------


이제 ROWCOUNT를 4로 설정하고 Quantity가 300보다 작은 모든 행을 업데이트합니다.


------------------------------------------------------------------------------------------
SET ROWCOUNT 4;
UPDATE Production.ProductInventory
SET Quantity = 400
WHERE Quantity < 300;
GO
(4 row(s) affected)
------------------------------------------------------------------------------------------

//========================================================================================

@@ROWCOUNT(Transact-SQL)


최근 실행된 문의 영향을 받은 행 수를 반환합니다.

Transact-SQL 구문 표기 규칙

구문

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

@@ROWCOUNT

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


주의
Transact-SQL 문은 다음과 같은 방법으로 @@ROWCOUNT의 값을 설정할 수 있습니다.

● @@ROWCOUNT를 영향을 받거나 읽은 행의 수로 설정합니다. 행은 클라이언트로 전송될 수도 그렇지 않을 수도 있습니다.


● 이전에 실행한 문의 @@ROWCOUNT를 유지합니다.


● @@ROWCOUNT를 0으로 다시 설정하지만 클라이언트에게 값을 반환하지 않습니다.


단순한 할당을 수행하는 문은 항상 @@ROWCOUNT 값을 1로 설정합니다. 클라이언트에게 행은 보내지지 않습니다. 이러한 문의 예로는 SET @local_variable, RETURN, READTEXT, 그리고 SELECT GETDATE() 또는 SELECT 'Generic Text'와 같이 쿼리 문이 없는 SELECT 문이 있습니다.

쿼리에서 할당을 수행하거나 쿼리에 RETURN을 사용하는 문은 @@ROWCOUNT 값을 쿼리의 영향을 받거나 쿼리가 읽은 행 수로 설정합니다. 예를 들면 SELECT @local_variable = c1 FROM t1과 같습니다.

DML(데이터 조작 언어) 문은 @@ROWCOUNT 값을 쿼리의 영향을 받는 행 수로 설정하고 해당 값을 클라이언트에 반환합니다. DML 문은 클라이언트에게 행을 보내지 않을 수도 있습니다.

DECLARE CURSOR와 FETCH는 @@ROWCOUNT 값을 1로 설정합니다.

EXECUTE 문은 이전 @@ROWCOUNT를 유지합니다.

USE, SET
2009/01/22 11:49 2009/01/22 11:49
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3920

[MS-SQL] ERROR_LINE(Transact-SQL)

TRY...CATCH 구문의 CATCH 블록 실행을 유발한 오류가 발생한 줄 번호를 반환합니다.

구문

ERROR_LINE()


반환 값
CATCH 블록에서 호출된 경우 다음을 반환합니다.

오류가 발생한 줄 번호를 반환합니다.


오류가 저장 프로시저 또는 트리거에서 발생한 경우 루틴 내의 줄 번호를 반환합니다.


CATCH 블록 외부에서 호출된 경우 NULL을 반환합니다.

주의
이 함수는 CATCH 블록 내의 어떤 위치에서도 호출할 수 있습니다.

ERROR_LINE은 호출 횟수 또는 CATCH 블록 내에서 호출된 위치에 관계 없이 오류가 발생한 줄 번호를 반환합니다. 이것은 오류가 발생한 문 바로 다음 문 또는 CATCH 블록의 첫 번째 문에 오류 번호를 반환하는 @@ERROR와 대조적입니다.

CATCH 블록이 중첩된 경우 ERROR_LINE은 참조되는 CATCH 블록의 범위에 해당하는 오류 줄 번호를 반환합니다. 예를 들어 TRY...CATCH 구조의 CATCH 블록에는 중첩된 TRY...CATCH 구문이 포함될 수 있습니다. 중첩된 CATCH 블록 내에 있는 ERROR_LINE은 중첩된 CATCH 블록을 호출한 오류의 줄 번호를 반환합니다. 외부 CATCH 블록에서 ERROR_LINE을 실행하면 해당 CATCH 블록을 호출한 오류의 줄 번호를 반환합니다.

반환 형식
INT


1. CATCH 블록에서 ERROR_LINE 사용
다음 코드 예에서는 0으로 나누기 오류를 생성하는 SELECT 문을 보여 줍니다. 오류가 발생한 줄 번호가 반환됩니다.

------------------------------------------------------------------------------------------
USE AdventureWorks;
GO

BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT ERROR_LINE() AS ErrorLine;
END CATCH;
GO
------------------------------------------------------------------------------------------


2. 저장 프로시저의 오류 줄 번호 반환을 위해 CATCH 블록에서 ERROR_LINE 사용
다음 코드 예에서는 0으로 나누기 오류를 생성하는 저장 프로시저를 보여 줍니다. ERROR_LINE은 오류가 발생한 저장 프로시저의 줄 번호를 반환합니다.


------------------------------------------------------------------------------------------
-- Verify that the stored procedure does not already exist
IF OBJECT_ID ( 'usp_ExampleProc', 'P' ) IS NOT NULL
DROP PROCEDURE usp_ExampleProc;
GO

-- Create a stored procedure that
-- generates a divide-by-zero error.
CREATE PROCEDURE usp_ExampleProc
AS
SELECT 1/0;
GO

BEGIN TRY
-- Execute the stored procedure inside the TRY block.
EXECUTE usp_ExampleProc;
END TRY
BEGIN CATCH
SELECT ERROR_LINE() AS ErrorLine;
END CATCH;
GO
------------------------------------------------------------------------------------------


3. CATCH 블록에서 다른 오류 처리 도구와 함께 ERROR_LINE 사용
다음 코드 예에서는 0으로 나누기 오류를 생성하는 SELECT 문을 보여 줍니다. 오류가 발생한 줄 번호와 함께 오류에 관련된 정보가 반환됩니다.


------------------------------------------------------------------------------------------
USE AdventureWorks;
GO

BEGIN TRY
-- Generate a divide-by-zero error.
SELECT 1/0;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() AS ErrorState,
ERROR_PROCEDURE() AS ErrorProcedure,
ERROR_LINE() AS ErrorLine,
ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
GO
------------------------------------------------------------------------------------------


참고 항목
참조
TRY...CATCH(Transact-SQL)
ERROR_NUMBER(Transact-SQL)
ERROR_MESSAGE(Transact-SQL)
ERROR_PROCEDURE(Transact-SQL)
ERROR_SEVERITY(Transact-SQL)
ERROR_STATE(Transact-SQL)
RAISERROR(Transact-SQL)
@@ERROR(Transact-SQL)

관련 자료
Transact-SQL의 오류 정보 검색
Transact-SQL에서 TRY...CATCH 사용
RAISERROR 사용
데이터베이스 엔진 오류 심각도
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/22 11:43 2009/01/22 11:43
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3919

[MS-SQL] TRY...CATCH(Transact-SQL)

구문

---------------------------------------------------------------------------
BEGIN TRY
{ sql_statement | statement_block }
END TRY
BEGIN CATCH
{ sql_statement | statement_block }
END CATCH
[ ; ]
---------------------------------------------------------------------------

주의
TRY...CATCH 구문은 심각도가 10을 넘으며 데이터베이스 연결을 끊지 않는 모든 실행 오류를 포착합니다.

TRY 블록 다음에는 곧바로 연관된 CATCH 블록이 이어져야 합니다. END TRY와 BEGIN CATCH 문 사이에 다른 문을 두면 구문 오류가 발생합니다.

TRY...CATCH 구문은 여러 일괄 처리에 걸칠 수 없으며 또한 여러 Transact-SQL 문 블록에 걸칠 수 없습니다. 예를 들어 하나의 TRY...CATCH 구문이 두 개의 Transact-SQL BEGIN...END 블록에 걸치거나 IF...ELSE 구문에 걸칠 수 없습니다.

TRY 블록의 마지막 문을 완료할 때 TRY 블록으로 묶은 코드에 오류가 없는 경우 연관된 END CATCH 문 바로 다음 문으로 제어가 전달됩니다. TRY 블록으로 묶은 코드에 오류가 있는 경우 연관된 CATCH 블록의 첫 번째 문으로 제어가 전달됩니다. END CATCH 문이 저장 프로시저 또는 트리거의 마지막 문인 경우 해당 저장 프로시저 또는 트리거를 호출한 문으로 제어가 전달됩니다.

CATCH 블록의 코드를 완료하면 END CATCH 문 바로 다음 문으로 제어가 전달됩니다. CATCH 블록이 포착한 오류는 호출 응용 프로그램으로 반환되지 않습니다. 오류 정보를 응용 프로그램으로 반환해야 하는 경우 CATCH 블록의 코드에서 SELECT 결과 집합 또는 RAISERROR 및 PRINT 문과 같은 메커니즘을 사용하십시오. TRY...CATCH와 함께 RAISERROR를 사용하는 방법은 Transact-SQL에서 TRY...CATCH 사용을 참조하십시오.

TRY...CATCH 구문은 중첩할 수 있습니다. TRY 블록 또는 CATCH 블록은 중첩된 TRY...CATCH 구문을 포함할 수 있습니다. 예를 들어 CATCH 블록에 TRY...CATCH 구문을 포함하여 CATCH 코드가 발견하는 오류를 처리할 수 있습니다.

CATCH 블록에서 발견되는 오류는 다른 곳에서 발생한 오류와 같이 취급됩니다. CATCH 블록이 중첩된 TRY...CATCH 구문을 포함하는 경우 중첩된 TRY 블록에서 오류가 발생하면 중첩된 CATCH 블록으로 제어가 전달됩니다. 중첩된 TRY...CATCH 구문이 없는 경우 호출자로 오류가 다시 전달됩니다.

TRY...CATCH 구문은 TRY 블록의 코드가 실행한 저장 프로시저 또는 트리거에서 처리되지 않은 오류를 포착합니다. 또는 저장 프로시저나 트리거 자체에 코드에서 발생한 오류를 처리할 수 있도록 TRY...CATCH 구문을 포함할 수 있습니다. 예를 들어 TRY 블록이 저장 프로시저를 실행하고 해당 저장 프로시저에서 오류가 발생하는 경우 다음과 같은 방법으로 오류를 처리할 수 있습니다.

저장 프로시저가 자체적인 TRY...CATCH 구문을 포함하지 않는 경우 오류가 발생하면 EXECUTE 문을 포함하는 TRY 블록과 연관된 CATCH 블록으로 제어가 반환됩니다.


저장 프로시저가 TRY...CATCH 구문을 포함하는 경우 오류가 발생하면 저장 프로시저의 CATCH 블록으로 제어가 전달됩니다. CATCH 블록 코드를 완료하면 해당 저장 프로시저를 호출한 EXECUTE 문 바로 다음 문으로 제어가 전달됩니다.


GOTO 문을 사용하여 TRY 또는 CATCH 블록에 진입할 수 없지만 동일한 TRY 또는 CATCH 블록 내의 레이블로 이동하거나 TRY 또는 CATCH 블록에서 나가는 것은 가능합니다.

사용자 정의 함수 내에서는 TRY...CATCH 구문을 사용할 수 없습니다.

오류 정보 검색
CATCH 블록의 범위 내에서 다음 시스템 함수를 사용하여 CATCH 블록을 실행하도록 만든 오류에 대한 정보를 얻을 수 있습니다.

● ERROR_NUMBER()는 오류 번호를 반환합니다.


● ERROR_SEVERITY()는 심각도를 반환합니다.


● ERROR_STATE()는 오류 상태 번호를 반환합니다.


● ERROR_PROCEDURE()는 오류가 발생한 저장 프로시저 또는 트리거의 이름을 반환합니다.


● ERROR_LINE()은 오류가 발생한 루틴 내의 줄 번호를 반환합니다.


● ERROR_MESSAGE()는 오류 메시지의 전체 텍스트를 반환합니다. 이 텍스트는 길이, 개체 이름 또는 시간과 같은 대체 가능한 매개 변수에 제공된 값을 포함합니다.


CATCH 블록의 범위를 벗어나 이 함수들을 호출하면 NULL이 반환됩니다. CATCH 블록의 범위 내 어디에서나 이들 함수를 사용하여 오류 정보를 검색할 수 있습니다. 예를 들어 다음 스크립트는 오류 처리 함수를 포함하는 저장 프로시저를 보여 줍니다. TRY...CATCH 구문의 CATCH 블록에서 이 저장 프로시저를 호출하면 오류에 대한 정보가 반환됩니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/22 11:40 2009/01/22 11:40
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3918

사람들은 노동 강도가 심해진 것에 불평과 불만을 토로한다.
그렇게 불평하는 사람들의 52%가 자기 직업에 만족을 표시했다.
또한 객관적으로 노동 강도가 심한 직장에서 일하는 사람들의 65%가
자기 직업에 만족을 표시했다.
반면 일을 적게 하거나 노동 강도가 그다지 높지 않다고 느끼는 사람들 중에서는
자기 직업에 만족을 표시한 사람들이 불과 45%에 지나지 않았다.

- USA 투데이



아마도 자신의 시간, 재능, 능력이 적절히 사용되지 않고 있다는 생각이
만족도를 낮춘 게 아닐까 싶습니다.
결국 일을 덜어 주는 게 아니라,
보람차고 가치 있는 일을 더 많이 할 수 있도록 하는 것이
직원들을 동기부여 시키는 길이라 할 수 있습니다.
직원들이 온전히 능력을 발휘해 내 몫 이상의 일을 하여 뿌듯하고,
스스로에게 대견함을 느낄 수 있도록 해주어야 합니다.
그 결과 생산성이 높아지면 노동 강도가 결코 꺽을 수 없는
만족감과 충만함을 느끼게 됩니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/22 09:18 2009/01/22 09:18
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3917

&quot;여기 있다. 봐라.&quot;

"아름다운 것을 보고 싶으냐?
내 삶의 기쁨이 무엇인지, 내가 무엇을 위해 사는지,
내 모든 삶을 가치 있게 하는 것이 무엇인지
보고 싶으냐? 여기 있다. 봐라."


- 켄 가이어의《영혼의 창》중에서 -


* 어디선가
"여기 있다. 봐라."
알려주는 순간이 있습니다.
사람을 통해서든, 자연을 통해서든...
진정한 삶의 가치와 아름다움을 발견하는 순간입니다.
눈처럼 희고 깨끗한 '영혼의 창'을 열어
새 공기를 마시는 순간입니다.
다시 태어나는 순간입니다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

Posted by 홍반장

2009/01/22 09:17 2009/01/22 09:17
Response
No Trackback , No Comment
RSS :
http://tcbs17.cafe24.com/tc/rss/response/3916


블로그 이미지

- 홍반장

Archives

Recent Trackbacks

Calendar

«   2009/01   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Statistics Graph

Site Stats

Total hits:
251416
Today:
144
Yesterday:
1251