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 5391 게시물 읽기
No. 5391
저장 프로시저 내에서 Insert , Update 시 발생하는 문제
작성자
james
작성일
2009-09-24 15:18
조회수
6,197

안녕하세요... 환절기에 다들 감기 조심 하시구요 ^^

다른게 아니라 VC++ 을 이용하여, DB Programming 을 하고 있습니다. 

디비는 sql 2005 를 사용하고 잇구요. 디비 연결은 ODBC 를 이용하고 있습니다.


일반적으로 사용하는 기본 코드인 SQLAllocHandle 및 SQLBindParameter 를 사용해서 프로그래밍을 하고 있는데요.


TCHAR sqlQuery[1024]; memset(sqlQuery, 0, sizeof(sqlQuery));

 sprintf(sqlQuery, TEXT("{ CALL  PROC_JAMES_LIN ( ?, ?, ? )}") ); 와 같이 프로시저를 호출하는 명령을 입력하여 OUTPUT 을 받으려고 하는데. 프로시저 안에


아래와 같이 Insert 및 Update 구문이 들어가 있으면 OUTPUT 및 그냥 Return Value 가 엉뚱한 (-1) 값이 나옵니다. 

디비 세팅에서 잘못된 것일까요? 아니면 다른 문제가 있을까요?


create PROCEDURE [dbo].[PROC_JAMES_LIN]

@strAccount varchar(20)

,@strPassword varchar(20)

, @nRet int output

AS

DECLARE @nCount int

SET @nCount = 0

BEGIN

 SELECT @nRet = -1

 SELECT @nCount = COUNT(strAccount) FROM JAMESTABLE

 IF @nCount <> 0

 BEGIN

  INSERT INTO JAMESTABLE VALUES(0, @strAccount, '111111')

  SELECT @nRet = 100

  RETURN 102

 END

 SELECT @nRet= 100

 RETURN 103

END

RETURN 104

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

OUTPUT값을 받으려는 거죠.. RETURN VALUE값이 아니고..


SELECT대신해서..


SET @nRet = 100 이런식으로 써보시는 것이 어떨까요?


자유인(미쉘78)님이 2009-10-06 10:35에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
53941111 [1]
궁금이
2009-09-28
5041
5393프로시져에서 리스트,카운트 가져오는법?
손님
2009-09-28
5850
5392ms-sql 2005에서 자동축소가 안되네요.. [1]
홍성우
2009-09-25
5700
5391저장 프로시저 내에서 Insert , Update 시 발생하는 문제 [1]
james
2009-09-24
6197
5384[문의] 쿼리하나 부탁드립니다. [1]
새벽소리
2009-09-22
5433
5369mssql2000 리뉴얼작업때 데이터 text부분이 잘리네요.. [2]
전동규
2009-09-16
5619
5368쿼리 질문있습니다. [1]
lhj
2009-09-15
5646
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다