database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 646 게시물 읽기
No. 646
제발알려주세요....ㅡ..ㅜ
작성자
정연희
작성일
2002-12-03 10:25
조회수
6,242

저장프로시저를 하나 만들었습니다.

 

정말 간단한건데요....

 

테이블에 있는 레코드의 수를 빼오는 건데요....

 

다음 @PolygonNum 와 @Polygon 가 OUTPUT 파라미터입니다..

 

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

SELECT @PolygonNum = COUNT(DISTINCT PolygonID) FROM CutMapPolygon

SELECT @Polygon = COUNT(*) FROM CutMapPolygon

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

 

C++상에서 출력해본결과 다른 값을 잘 넘어오는데....결과값이 항상 256이 모자른 값으로 출력이 됩니다.

너무 이상해서 아래과 같이 다시 해봤는데요...

 

SET @Polygon = 500

 

역시나....

@Polygon 값이 244로 출력이 되더군요...

 

물론 int로 선언되어 있구요.,,,,

이유를 모르겠습니다...

QnA 살펴봐도 문자에 대해서만 나와있지.

정수에 대해서는 못찾겠더군요.....

 

아시는 분 꼭 좀 알려주세요^^;;;;

이 글에 대한 댓글이 총 3건 있습니다.

정말 이상한 경우군요. 그래서 함 테스트해보았습니다.

 

DROP PROCEDURE row_count

GO

 

CREATE PROCEDURE row_count @PolygonNum int OUTPUT, @Polygon int OUTPUT

AS

SELECT @PolygonNum = COUNT(DISTINCT UserLevel)

FROM AUSER

SELECT @Polygon = COUNT(*)

FROM AUSER

GO

 

DECLARE @PolygonNum int

DECLARE @Polygon int

EXECUTE row_count @PolygonNum OUTPUT, @Polygon OUTPUT

SELECT @PolygonNum, @Polygon

GO

 

테스트해보니 잘 나오는데...

김동아(love89)님이 2002-12-03 13:09에 작성한 댓글입니다.

넵...

저두 쿼리분석기에선 잘 되는데....

 

vc++ 상 에서 값을 꺼내면.

256 보다 큰값은 잘려지네요...ㅡ..ㅡ

 

HRESULT hr = CoInitialize(0);

 

m_command->CommandText = "procRecordNum";

m_command->CommandType = adCmdStoredProc;

 

m_command->Parameters->Append(m_command->CreateParameter("@PolygonNum", adInteger, adParamOutput, 4));

m_command->Parameters->Append(m_command->CreateParameter("@PolylineNum", adInteger, adParamOutput, 4));

m_command->Parameters->Append(m_command->CreateParameter("@PointNum", adInteger, adParamOutput, 4));

m_command->Parameters->Append(m_command->CreateParameter("@Polygon", adInteger, adParamOutput, 4));

m_command->Parameters->Append(m_command->CreateParameter("@Polyline", adInteger, adParamOutput, 4));

m_command->Parameters->Append(m_command->CreateParameter("@Point", adInteger, adParamOutput, 4));

 

hr = m_command->Execute(NULL,NULL,NULL);

 

if(SUCCEEDED(hr))

{

PolygonUniqueNum = m_command->GetParameters()->GetItem("@PolygonNum")->Value.bVal;

PolylineUniqueNum = m_command->GetParameters()->GetItem("@PolylineNum")->Value.bVal;

PointUniqueNum = m_command->GetParameters()->GetItem("@PointNum")->Value.bVal;

 

polygon = m_command->GetParameters()->GetItem("@Polygon")->Value.bVal;

polyline = m_command->GetParameters()->GetItem("@Polyline")->Value.bVal;

point = m_command->GetParameters()->GetItem("@Point")->Value.bVal;

}

 

이렇게 하면....

256보다 큰 값인 polygon만 256이 잘려진 값이....

즉 원래 레코드 수가 400 이었다면.. 144가 나오는겁니다...ㅡ..ㅡ

 

정말 이상하지 않나요???

정연희님이 2002-12-03 14:11에 작성한 댓글입니다.

머 지금쯤 해결 하셨나 모르겠는데요..

우선 vc에서 값을 넘겨 받는 변수에 초기화를 시켜 보시고 차례대로 각 줄에다가 메세지 박스가 있으면 그런걸로 전부 라인 체크 해 보시던가..

디버거를 돌려 보세요..

그럴리는 없다 봅니다.

분명 어딘가에서 값을 어떻게 처리하는 부분이 있지 않을까 생각이 되는군요..

컴터는 사람이 시키는대로 하니까요..

쿼리 분석기에서 확인 하셨으면 분명 소스 중에 처리 하는 부분에서 문제가 있을겁니다.

예상이지만요..^^;;

그럼 수고하셈.

나그네님이 2002-12-07 12:46에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
650mssql ->mysql로 변환이 가능한지 궁금합니다. [1]
박현
2002-12-06
4681
648테이블에서 칼럼음 몇개가지? [1]
김동연
2002-12-05
4572
647auto_increment 를 기본 100부터 시작하는 방법 [1]
냐하하하
2002-12-04
4768
646제발알려주세요....ㅡ..ㅜ [3]
정연희
2002-12-03
6242
645sa문제로.. [1]
namu
2002-12-03
7697
644SQL Server에서 비정기적으로 처리 지연이 발생합니다... [1]
multics
2002-12-02
5284
640대표값 구하기..좀 어려운가??? -- [3]
오하나
2002-12-02
5802
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다