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
운영게시판
최근게시물
Sybase Q&A 1933 게시물 읽기
No. 1933
왜 임시테이블을 인식하지 못할까요? ㅠㅠ
작성자
박태선(alwaysblue21)
작성일
2007-05-30 19:09
조회수
6,529

CREATE PROCEDURE dbo.USP_GET_BOARD_LIST 

    @LISTCNT INT, 

    @PAGENUM INT, 

    @SEARCH VARCHAR(255)

AS 

 BEGIN 

     DECLARE @SQL NVARCHAR(1500)

 

        DECLARE @STARTPOINT INT 

        DECLARE @ENDPOINT INT 

        SET @STARTPOINT = @LISTCNT * (@PAGENUM - 1) + 1 

        SET @ENDPOINT = @LISTCNT * @PAGENUM 

 

        SET @SQL = 'SELECT IDX=IDENTITY(10), SEQ, TITLE, WRITEDATE, READCOUNT INTO #TMP001 FROM NOTICE' 

        IF @SEARCH IS NOT NULL 

            SET @SQL = @SQL + ' WHERE ' + @SEARCH 

        SET @SQL = @SQL + ' ORDER BY SEQ DESC' 

        EXEC (@SQL)

 

        SET ROWCOUNT @LISTCNT 

        SET @SQL = 'SELECT SEQ, TITLE, WRITEDATE, READCOUNT FROM #TMP001 WHERE IDX BETWEEN ' + CONVERT(VARCHAR(8),@STARTPOINT) + ' AND ' + CONVERT(VARCHAR(8),@ENDPOINT) 

        EXEC (@SQL)

 

        DROP TABLE #TMP001 

 END


이 프로시져를 실행시키면 아래와 같은 오류가 생깁니다..해결책 좀 알려주세요...완전 삽질하고 있어요.. OTL

[DataDirect][ODBC Sybase Wire Protocol driver][SQL Server]#TMP001 not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output).

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

temp table의 범위 때문에 발생하는 듯 합니다.
1. stored procedure에서 생성한 temp테이블은 stored procedure가 종료되면
   자동으로 temp table이 drop 됩니다
create procedure test_proc
as
begin
 select '111' as col1  into #temp
 select * from #temp
end

2. exec 도 stored procedure 를 호출하는 것처럼 동작 되는듯..
   SET @SQL = 'SELECT IDX=IDENTITY(10), SEQ, TITLE, WRITEDATE, READCOUNT INTO #TMP001 FROM NOTICE'  
    EXEC (@SQL) 
   위문장에서 exec를 호출하는 순간 temp table 생성과 동시에 drop 됨

3.해결방안
   먼저 temp table를 create 시키고 exec를 통하여 insert, select를 사용하면 될 듯
create procedure test_proc2
as
declare @sql char(255)
begin
 create table #temp (idx numeric(10) identity, codeset char(255))
 select @sql = "insert #temp select codeset from mng..mgcd01"
 exec(@sql)
 select @sql = "select * from #temp"
 exec(@sql)
end

 


영빈~(backfish)님이 2007-05-31 08:59에 작성한 댓글입니다.
이 댓글은 2007-05-31 13:07에 마지막으로 수정되었습니다.

영빈~님 감사합니다..덕분에 해결했네요..^^
복 많이 받으세요~~!!

박태선(alwaysblue21)님이 2007-05-31 10:20에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
1936디스크 무결성 점검 작업에 대하여.. [2]
열심도령
2007-06-04
4956
1935컬럼의 값이 숫자가 아닌 값이 있는지? [1]
이은영
2007-06-01
4934
1934두개의 데이터윈도우에서 각 row값를 선택하여 합
왕초보
2007-05-31
4766
1933왜 임시테이블을 인식하지 못할까요? ㅠㅠ [2]
박태선
2007-05-30
6529
1932프로시져 안에서 동적 쿼리를 실행하는 프로시져가 있는지요? [2]
박태선
2007-05-30
6283
1931input file has exceeded 오류 관련해서 질문드려요.. [1]
질문
2007-05-29
5087
1930sybase 개월수 로직 좀.... [1]
정승원
2007-05-29
5867
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다