[MSSQL] 커서 사용

2007. 12. 5. 15:26

-- 커서를 돌릴 Select 문
declare Inout_Cursor_ItemCode_sub CURSOR
   FOR   select InoutNo, InoutGubun, InoutSerNo,
                CalcInOutQty, InOutPrice, InoutAmnt
         from   mmInoutItem
         where  SiteCode  = @SiteCode
           and  WhCode    = @WhCode
    and  InvStatus = @InvStatus
    and  ItemCode  = @ItemCode
    and  ((InoutDate > @InoutDate) or (InoutDate = @InoutDate and ItemDaySerno > @ItemDaySerno))
        order by InoutDate, ItemDaySerNo

--커서를 열어서 한 Row 씩 값을 받기 위함.
--여기서 받는 변수들은 별도로 선언을 해줘야 함.
   open Inout_Cursor_ItemCode_sub
   fetch next from Inout_Cursor_ItemCode_sub into @InoutNo_c, @InoutGubun_c, @InoutSerNo_c, @CalcInOutQty_c, @InOutPrice_c, @InoutAmnt_c
   
--커서를 돌림.
   WHILE @@FETCH_STATUS = 0
   BEGIN
   set @OhQty_c    = @OhQty_O
   set @OhAmnt_c   = @OhAmnt_O
   set @OhPrice_c  = @OhPrice_O
   
    update mmInoutItem
    set    OhQty   = @OhQty_O,
           OhPrice = @OhPrice_O,
           OhAmnt  = @OhAmnt_O
     where SiteCode   = @SiteCode
       and InoutNo    = @InoutNo_c
       and InoutGubun = @InoutGubun_c
       and InoutSerNo = @InoutSerNo_c

   FETCH NEXT from Inout_Cursor_ItemCode_sub into @InoutNo_c, @InoutGubun_c, @InoutSerNo_c, @CalcInOutQty_c, @InOutPrice_c, @InoutAmnt_c

--커서 닫음  
   END
   close Inout_Cursor_ItemCode_sub
   deallocate Inout_Cursor_ItemCode_sub

Posted by 나비:D
:

SQL Server 서비스 팩 버전과 에디션 확인

 

이 문서에서는 현재 SQL Server 버전 번호와 해당 제품 또는 서비스 팩(SP) 수준을 확인하는 방법을 설명합니다. 또한 SQL Server 7.0이나 SQL Server 2000을 사용 중인 경우 특정 에디션을 확인하는 방법도 설명합니다.

 

http://support.microsoft.com/default.aspx?scid=kb;ko;321185

Posted by 나비:D
:
출처 : MSDN 도움말
RAW[('ElementName')]

쿼리 결과를 사용하여 결과 집합의 각 행을 요소 태그로 <row /> 일반 식별자를 갖는 XML 요소로 변환합니다. 이 지시어를 사용하는 경우 필요에 따라 행 요소에 대한 이름을 지정할 수 있습니다. 결과 XML은 각 행에 대해 행 요소가 생성될 때 지정된 ElementName을 사용합니다. 자세한 내용은 RAW 모드 사용새 FOR XML 기능을 참조하십시오.

AUTO

단순하게 중첩된 XML 트리로 쿼리 결과를 반환합니다. 최소한 한 개의 열이 SELECT 절에 나열되는 FROM 절의 각 테이블은 XML 요소로 표시됩니다. SELECT 절에 나열되는 열은 해당 요소의 특성에 매핑됩니다. 자세한 내용은 AUTO 모드 사용새 FOR XML 기능을 참조하십시오.

EXPLICIT

결과 XML 트리 형태가 명시적으로 정의되도록 지정합니다. 쿼리는 이 모드를 사용하여 원하는 중첩에 대한 추가 정보가 명시적으로 지정되도록 특정 방식으로 작성되어야 합니다. 자세한 내용은 EXPLICIT 모드 사용새 FOR XML 기능을 참조하십시오.

PATH

요소와 특성을 혼합하고 추가 중첩을 사용하여 복잡한 속성을 나타내는 보다 간단한 방법을 제공합니다. FOR XML EXPLICIT 모드 쿼리를 사용하여 행 집합에서 이러한 종류의 XML을 구성할 수 있지만 PATH 모드는 복잡할 수도 있는 EXPLICIT 모드 쿼리 대신 훨씬 간단한 방법을 제공합니다. XML 유형 인스턴스를 반환하는 중첩 FOR XML 쿼리 및 TYPE 지시어 작성 기능과 함께 PATH 모드를 사용하면 보다 간편하게 쿼리를 작성할 수 있습니다. 이 모드는 대부분의 EXPLICIT 모드 쿼리 작성을 대신할 방법을 제공합니다. 기본적으로 PATH 모드는 결과 집합의 각 행에 대한 <row> 요소 래퍼를 생성합니다. 필요에 따라 요소 이름을 지정할 수 있습니다. 요소 이름을 지정한 경우 지정된 이름이 래퍼 요소 이름으로 사용됩니다. 빈 문자열(FOR XML PATH (''))을 제공하면 래퍼 요소가 생성되지 않습니다. 자세한 내용은 PATH 모드 사용를 참조하십시오.

XMLDATA

인라인 XDR(XML-Data Reduced) 스키마가 반환되어야 함을 지정합니다. 스키마는 인라인 스키마로 문서 앞에 놓이게 됩니다. 작업 예제의 경우 RAW 모드 사용를 참조하십시오.

XMLSCHEMA

인라인 W3C XML 스키마(XSD)를 반환합니다. 이 지시어를 지정할 때 필요에 따라 대상 네임스페이스 URI를 지정할 수 있습니다. 이렇게 하면 스키마에 지정된 네임스페이스를 반환합니다. 자세한 내용은 인라인 XSD 스키마 생성을 참조하십시오. 작업 예제의 경우 RAW 모드 사용를 참조하십시오.

ELEMENTS

ELEMENTS 옵션이 지정되면 열이 하위 요소로 반환됩니다. 그렇지 않은 경우에는 XML 특성에 매핑됩니다. 이 옵션은 RAW, AUTO 및 PATH 모드에서만 지원됩니다. 이 지시어를 사용하는 경우 필요에 따라 XSINIL 또는 ABSENT를 지정할 수 있습니다. XSINIL은 True로 설정된 xsi:nil 특성이 있는 요소가 NULL 열 값에 대해 생성되도록 지정합니다. 기본적으로 또는 ABSENT가 ELEMENTS와 함께 지정된 경우 요소가 NULL 값에 대해 생성되지 않습니다. 작업 예제의 경우 RAW 모드 사용AUTO 모드 사용를 참조하십시오.

BINARY BASE64

BINARY Base64 옵션이 지정되면 쿼리에서 반환되는 이진 데이터가 모두 base64 인코딩 형식으로 표시됩니다. RAW와 EXPLICIT 모드를 사용하여 이진 데이터를 검색하려면 이 옵션을 지정해야 합니다. AUTO 모드에서 이진 데이터는 기본적으로 참조로 반환됩니다. 작업 예제의 경우 RAW 모드 사용를 참조하십시오.

TYPE

쿼리가 결과를 xml 형식으로 반환하도록 지정합니다. 자세한 내용은 FOR XML 쿼리의 TYPE 지시어를 참조하십시오.

ROOT [('RootName')]

단일 최상위 요소가 결과 XML에 추가되도록 지정합니다. 필요에 따라 생성할 루트 요소 이름을 지정할 수 있습니다. 기본값은 "root"입니다.

Posted by 나비:D
:

머..여러 방법이 있겠지만..


날짜 형식이 2000-01-01 00: 00: 00.000 이래 나오는데..


이걸 내 입맛에 맛게 바꾸기!!



cast(datepart(mm,b_date) as varchar(10))


의 방법으로 원하는 날짜의 형식중 일부분만 뽑아와서 연결


cast(datepart(mm,b_date) as varchar(10)) + '-' +

cast(datepart(dd,b_date) as varchar(10)) + '  ' +

cast(datepart(yyyy, b_date) as varchar(10))


결과


01-01 2000


응용하면 여러가지 원하는 형태의 날짜로 출력 가능


select 문에 들어가면...


select

          cast(datepart(mm,b_date) as varchar(10)) + '-' +

          cast(datepart(dd,b_date) as varchar(10)) + '  ' +

          cast(datepart(yyyy, b_date) as varchar(10))

      as b_date

from

      bbs

where

      b_idx='100010'

Posted by 나비:D
:

CommandType 속성

CommandType 속성은 Command 개체의 형식을 나타내며, 다음 표의 값을 지정할 수 있다.

상수 설명
adCmdUnspecified -1 CommandType 인수를 지정하지 않는다.
adCmdUnknown 8 디폴트 값, Command 개체의 타입을 알 수 없음으로 지정한다.
adCmdText 1 명령어 또는 저장 프로시저를 텍스트로 지정한다.
adCmdTable 2 테이블을 지정한다(내부적으로 생성된 SQL 문장에 의해서 필드가 생성된다).
adCmdStoredProc 4 저장 프로시저를 지정한다.
adCmdFile 256 Persisted Recordset 개체의 파일명을 지정한다.
adCmdTableDirect 512 테이블을 지정한다(모든 필드가 생성된다).

CommandType 속성의 값이 디폴트 값인 adCmdUnknown일 경우에는 CommandText 속성이 SQL 문장인지, 저장 프로시저인지, 테이블의 이름인지를 결정하기 위해서 ADO는 Provider를 호출하게 되고, CommandType 속성을 정확하게 지정한 경우 보다 Command 개체가 수행하기 위해 부하가 더 걸리게 된다.
그렇기 때문에 CommandType 속성을 정확하게 지정하고 사용하면 디폴트 값을 사용하는 것보다 빠른 속도로 명령을 실행하게 된다.
CommandType 속성에 지정한 값과 실제 실행에 사용될 명령의 형식이 맞지 않을 경우에는 Execte 메서드를 사용할 때 오류가 발생하게 된다.

Execute 메서드를 사용할 때 함께 사용할 수 있는 옵션으로 adExecuteNoRecords가 있다. 이 옵션은 명령 또는 저장 프로시저가 반환 값을 가지지 않을 경우에 지정한다.

adExecuteNoRecords 상수는 최소한의 내부 프로세스만을 거치기 때문에 속도는 빠른 반면에 항상 adCmdText 또는 adCmdStoredProc 상수와 함께 사용해야 한다.

[예제]

다음 예제는 CommandType 속성을 adCmdText로 지정해서 Command 개체를 수행하는 예이다.

Private Sub cmdCommandType_Click()
   Dim adoCn As New ADODB.Connection
   Dim adoCmd As New ADODB.Command
   Dim strConn As String

   strConn = "Provider=sqloledb;" & _
         "Data Source=(local);Initial Catalog=Pubs;User ID=sa;Password=; "

   adoCn.Open strConn

   Set adoCmd.ActiveConnection = adoCn

   adoCmd.CommandText = "Update Authors Set au_lname = 'Chris' " & _
         " Where au_id = '172-32-1176'"

   adoCmd.CommandType = adCmdText

   adoCmd.Execute

   Set adoCmd = Nothing

   adoCn.Close
   Set adoCn = Nothing
End Sub

Posted by 나비:D
:

MS-SQL DATEADD 함수

2007. 12. 5. 15:21

DATEADD

지정한 날짜에 시간 간격을 더하여 새 datetime 값을 반환합니다.

구문

DATEADD ( datepart , number, date )

인수

datepart

새 값을 반환할 날짜 부분을 지정하는 매개 변수입니다.  다음은 Microsoft® SQL Server™에서 인식하는 날짜 부분과 약어입니다.

날짜 부분 약어
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms

number

datepart에 더해지는 값입니다. 정수가 아닌 값을 지정하면 값의 소수 부분이 무시됩니다. 예를 들어 datepartday, number1.75를 지정한 경우, date는 1만큼 증가합니다.

date

날짜 형식에서 datetime이나 smalldatetime 값이나 문자열을 반환하는 식입니다.  날짜 지정에 대한 자세한 내용은 datetime 및 smalldatetime을 참조하십시오.

연도의 마지막 두 자리 숫자만 지정할 경우 two digit year cutoff 구성 옵션 값의 마지막 두 자리 숫자보다 작거나 같은 값은 구분 기준 연도와 같은 세기에 해당합니다.  이 옵션 값의 마지막 두 자리 숫자보다 큰 값은 구분 기준 연도보다 이전 세기에 해당합니다.  예를 들어, two digit year cutoff가 2049(기본값)일 경우 49는 2049년으로 해석되고 2050은 1950년으로 해석됩니다. 이러한 애매함을 피하기 위해 네 자리 연도를 사용하십시오.

반환 형식

datetime을 반환하지만 date 인수가 smalldatetime일 경우에는 smalldatetime을 반환합니다.

예제

다음은 pubs 데이터베이스의 titles 테이블에 대해 시간 프레임의 목록을 인쇄하는 예제입니다.  다음 시간 프레임은 기존 출판 날짜에 21일을 더한 날짜를 나타냅니다.

USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
GO

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

timeframe                                              
--------------------------
1991-07-03 00:00:00.000
1991-06-30 00:00:00.000
1991-07-21 00:00:00.000
1991-07-13 00:00:00.000
1991-06-30 00:00:00.000
1991-07-09 00:00:00.000
2000-08-21 02:22:04.830
1991-07-21 00:00:00.000
1994-07-03 00:00:00.000
2000-08-21 02:22:04.863
1991-11-11 00:00:00.000
1991-07-06 00:00:00.000
1991-10-26 00:00:00.000
1991-07-03 00:00:00.000
1991-07-03 00:00:00.000
1991-11-11 00:00:00.000
1991-07-03 00:00:00.000
1991-07-03 00:00:00.000

(18  적용됨)
Posted by 나비:D
:

select getdate()
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 1), 1), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 2), 2), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 3), 3), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 4), 4), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 5), 5), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 6), 6), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 7), 7), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 8), 8), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 9), 9), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 10), 10), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 11), 11), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 12), 12), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 13), 13), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 14), 14), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 20), 20), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 21), 21), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 22), 22), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 23), 23), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 24), 24), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 25), 25), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 100), 100), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 101), 101), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 102), 102), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 103), 103), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 104), 104), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 105), 105), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 106), 106), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 107), 107), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 108), 108), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 109), 109), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 110), 110), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 111), 111), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 112), 112), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 113), 113), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 114), 114), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 120), 120), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 121), 121), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 130), 130), 20)
select LEFT(CONVERT(VARCHAR, CONVERT(datetime, getdate(), 131), 131), 20)

 


※ 모양은 쿼리 분석기로 실행해보세요 -0-

Posted by 나비:D
:

BLOG main image
by 나비:D

공지사항

카테고리

분류 전체보기 (278)
Programming? (0)
---------------------------.. (0)
나비의삽질 (5)
Application (177)
SQL (51)
Web (27)
etc. (14)
Omnia (0)
---------------------------.. (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

달력

«   2024/12   »
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
Total :
Today : Yesterday :