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 1441 게시물 읽기
No. 1441
temp table 문제 입니다.
작성자
조경남(ouch02)
작성일
2006-02-16 16:03
조회수
8,354

sybase 버전 ASE 12.5를 사용하고 있습니다.

프로지저를 생성하려고 합니다.

첫번째 프로시져에서

begin tran

execute 두번째 프로시져

....

rollback trans

....

commit tran

위와 같이 만들었습니다.

문제는 두번째 프로시져에서 temp table을 사용했습니다.

(create table #temp_aaa)

그런데 실행을 하다보니 계속 에러가 나더라구요~

에러 내용은 대충 multi-statement transaction 이런 메세지가 나오는거고

해결방법은 ddl in tran 옵션을 true로 주면 된다고 하지만..temp db에 이 옵션을 줬음에도 불구하고

다른 에러가 발생하더라구요.

그리고 다른 책에서 보니 temp db에 ddl in tran 옵션을 주는 것은 바람직하지 않다고 기술되어 있어서

그 방법을 제외하고 처리하는 방법이 없을까요?

select into 문을 사용해도 'SELECT INTO command not allowed within multi-statement transaction.' 같은 에러 메세지만 나오구요~ begin tran 안에서는 temp table 사용이 불가능한건가요?

그럼 다른 대안으로는 어떠한 것이 있는지 알려주시면 감사하겠습니다.

그럼 수고하세요~!

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

 

transaction 내에서는 사용치 못합니다.

하지만 tempdb에 ddl in tran option을 설정하면 가능합니다.

sp_dboption tempdb, "ddl in tran", true

go

use tempdb

go

checkpoint

go

 

multi-tempdb 의 경우는 어느 tempdb로 들어 갈지 모르니 모든 tempdb에 이 옵션을 걸어야 합니다.

하지만 tempdb에는 기본 option 이외의 option setting응 권장하지 않습니다.

 

아래 명령어는 트랜잭션내에서는 아예 안되는 명령어입니다.

• alter database
• create database
• dbcc reindex, dbcc fix_text
• disk init
• drop database
• dump database, dump transaction
• load database, load transaction
• select into
• set transaction isolation level
• truncate table
• update statistics

. setuser

아래 명령어는 ddl in tran option이 설정 되어 있을 경우 가능 합니다.

• create default, create index, create procedure, create rule, create schema,
create table, create trigger, create view
• drop default, drop index, drop procedure, drop rule, drop table, drop trigger,
drop view
• grant
• revoke

사상님이 2006-02-16 17:44에 작성한 댓글입니다.
이 댓글은 2006-02-16 17:50에 마지막으로 수정되었습니다. Edit

음.. 우선 답변 주셔서 감사드립니다.

그렇다면 방법이 없는건가요?

다른 대안은 없는것인지도 알려주시면 감사하겠습니다.

조경남님이 2006-02-17 09:38에 작성한 댓글입니다. Edit

두번째 프로시저를 호출하기 전에 temp table을 만드세요.

 

이렇게 하세요.

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

첫번째 프로시져에서

begin tran

 

create table #temp_aaa

 

execute 두번째 프로시져

....

rollback trans

....

commit tran

존넘님이 2006-02-17 15:02에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1444사이베이스에서 numeric를 string 타입으로 변경하는 방법좀
시그너스
2006-02-21
3740
1443Column 추가 에러 [6]
급해요
2006-02-21
6580
1442asiq EXECUTE IMMEDIATE 문의 [8]
손유근
2006-02-17
4799
1441temp table 문제 입니다. [3]
조경남
2006-02-16
8354
1440out of LOCKS 문제.. [1]
허남훈
2006-02-15
4481
1439필드값을 전부 곱하려면. [4]
궁금
2006-02-15
3590
1438sybase trigger 쿼리 에러 문의 [2]
최종환
2006-02-14
4648
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다