모두 아시다시피, VBScript에서는 Data Type이 존재하지 않습니다.
기본적으로 모든 Data는 [Variant] Type입니다.
VBA와도 조금 다르네요...

하지만, 대다수의 Class들은 "CreateObject" 키워드를 통해 사용은 가능합니다.

Dim obj
Set obj = CreateObject("ADODB.Recordset")

하지만, DB를 핸들링하는 데 많이 사용하는 ADODB.Command는 사용이 불가능합니다.

그래서, ADODB.Recordset를 통해야 하는 데요.
String(문자열)로 Query를 작성하는 데서, 꽤나 애를 먹었습니다.

그래서 정리했습니다 ^^;

Dim strQuery
Dim objRs
‘ EXECUTE가 아닌 ‘EXEC’를 사용한다. 'EXECUTE'를 사용하면 아니 아니 아니됩니다~~
strQuery = "EXEC " & STORED_PROC_NAME
‘ Number(Int, Float)등의 변수는 그냥 문자열로 변환 후에 할당해주면 됩니다.
strQuery = strQuery & " @PARAM1 = " & INT_VALUE
‘ 하지만 STRING 변수는 따옴표(‘)로 묶어주며, 다수의 변수를 요구하는 SP의 경우, 쉼표(,)로 구분하면 됩니다.
strQuery = strQuery & ", @PARAM2 = '" & STR_VALUE & "'"

Set objRs = CreateObject("ADODB.Recordset")
' 찾다가 찾다가 가장 승질 뻗친 부분인데요, 옵션을 아무것도 넣어주면 안됩니다. Default로 된 것을 넣어줘도 안되었던 기억이 있네요.
' 그냥 아무 옵션을 걸지말고 해야합니다.
objRs.Open strQuery, dbConn
Set objRs = Nothing

위에 주석으로 설명을 했습니다. ^^;

이것 때문에 한참을 고생했드랬습니다.

VBScript는 다뤄보질 않아서, 그냥 VBA와 비슷하겠거니라고 하고, 뎀볐는 데.... 이상한 곳에서 많이 막혔었네요;;

테스트 환경도 없고, 디버깅....은 어찌하는 지 몰라서, 그냥 VBA에 대놓고 코딩을 했었거든요.
몇 가지 차이점만 주의하면, VBA에서 코딩하고 테스팅해서 올리면 바로 되긴 합니다. ^^

조만간 VBScript를 작성하며, 생긴 노하우에 대해서 포스팅해보겠습니다.ㅎㅎ


덧.
아..이 개발은 웹이 베이스가 아니었습니다.
MS-SQL SERVER에 DTS(Data Transfer Service)라고 있는 데, 여기에 들어갈 서비스를 수정하는 것을 맡았었거든요.
웹이 베이스라면, 무언가를 뿌려보고 해서(C에서의 printf와 같이....) 수행 단계를 확인이나마 할 수 있었을 텐데요;;
모 별 수 없이. DB Table에 Step 데이터를 뿌려서, 그걸 확인하며 했었네요;;
여튼 이 부분은 곧! 정리해서 포스팅 하겠습니다.

'배움 > VBScript' 카테고리의 다른 글

VBScript에서 STORED PROCEDURE 사용하기  (0) 2012.03.19
테이블 설계를 변경해야 하는 경우
해당 테이블을 사용하는 STORED PROCEDURE, STORED FUNCTION 등을 찾아야 하는 데요.
그래야 변경을 할 것인지 아닌지를 결정할 수 있고, 변경할 수 있는 범위를 가늠할 수도 있고요.
이 또한 문서화가 제대로 되어있지 않을 수 밖에 없으니..

특정 테이블을 사용하는 PROCEDURE를 찾는 쿼리입니다.

SELECT 
    DISTINCT O.NAME
FROM 
    SYSDEPENDS AS D
INNER JOIN 
    SYSOBJECTS AS O 
ON 
    D.ID = O.ID
WHERE 
    O.XTYPE = 'P' 
	AND D.DEPID = 
	    (
    	    SELECT 
    	        ID 
    	    FROM 
    	        SYSOBJECTS 
    	    WHERE 
    	        NAME = '테이블명'
	    )

한계는 존재합니다. 테이블이 정의된 CATEGORY와 동일한 CATEGORY 내에 존재하는 STORED PROCEDURE만 찾을 수 있다는 것인데요.
물론, 다른 CATEGORY에 정의된 테이블을 사용하는 게 옳은 지에 대해서는 저는 아직 잘 모르겠습니다.
다만 가급적 안하는 게 좋겠죠. 하지만 그런 경우 자체는 존재하니.ㅠㅠ
차라리 다른 CATEGORY에 존재하는 TABLE의 내용을 사용하고 싶은 경우에는 TABLE 자체를 자신의 CATEGORY로 자동으로 MIRRORING해주는 게 맞을 듯 합니다. 실시간으로 해주고 싶다면, TRIGGER도 있고, 사용이 잘 안되는 시간대에 이벤트로 변경된 것만 긁어와도 되고, 방법이야 많으니까요. ㅎㅎ

'배움 > MS-SQL' 카테고리의 다른 글

특정 테이블을 사용하는 STORED PROCEDURE 찾기  (2) 2012.03.08
TABLE COLUMN 정보 확인 QUERY  (0) 2012.03.08

DATABASE 테이블에 대한 설계 문서는 가장 중요합니다.
하지만, 실상 문서 자체가 현 상태를 제대로 설명해주는 경우는 잘 없습니다.
그래서 확인해야 할 경우가 존재하는 데요.
아래 쿼리를 사용하면 됩니다.
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '테이블명' ORDER BY ORDINAL_POSITION
각 COLUMN이 NULLABLE인지 아닌지, 그 데이터 타입이 무엇인지 등을 확인할 수 있습니다.
그리고 덤으로 해당 테이블의 PRIMARY KEY인 COLUMN을 확인할 수 있는 QUERY도 아래에 두겠습니다.
SELECT 
    COLUMN_NAME
FROM 
    INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE 
    OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_NAME), 'ISPRIMARYKEY') = 1
    AND 
        TABLE_NAME = '테이블명'
이 역시 테이블 정보를 확인하는 데, 필수적인 정보겠죠.

종종 쓸 수 밖에 없는 QUERY라서 BACKUP용도로 포스팅합니다.^^


'배움 > MS-SQL' 카테고리의 다른 글

특정 테이블을 사용하는 STORED PROCEDURE 찾기  (2) 2012.03.08
TABLE COLUMN 정보 확인 QUERY  (0) 2012.03.08