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 1105 게시물 읽기
No. 1105
커서 선언시 로컬변수로 동적SQL 지정은 안되나여?
작성자
박남준(ppark0415)
작성일
2005-03-14 20:14
조회수
5,620

아래와 같이 프로시져로 작성하여 이중커서로 결과를 얻으려고 합니다.

두번째 커서에서 커서선언시 동적으로 첫번째 커서로 부터 얻은 테이블명으로 로컬변수에

SQL을 작성하여 돌리려고 하는데

로컬변수를 인식 못하네여... 사용못하는것인지 아님 잘못한게 있는지 알고 싶습니다.

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

CREATE PROCEDURE sp_useraccsync
AS
SET nocount ON

DECLARE @dbname varchar(20)
DECLARE @result varchar(100)
DECLARE @temp varchar(100)

DECLARE DB_CUR CURSOR FOR
SELECT DISTINCT db_info.name AS db_name
FROM (SELECT a.name AS name
FROM master.dbo.sysdatabases AS a, master.dbo.syslogins as b
WHERE a.name = b.dbname ) db_info
OPEN DB_CUR
FETCH DB_CUR INTO @dbname

WHILE (@@sqlstatus = 0)
BEGIN
DECLARE @username varchar(60)
DECLARE @output varchar(100)
DECLARE @usersql varchar(100)
SET @usersql = 'select name from ' + @dbname + '.dbo.sysusers'
DECLARE USER_CUR CURSOR FOR @usersql
FETCH DB_CUR INTO @dbname
END
SET nocount OFF
CLOSE DB_CUR
DEALLOCATE CURSOR DB_CUR -- 메모리에서 제거

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

두번째 커서 " DECLARE USER_CUR CURSOR FOR @usersql " 에서 로컬변수인

"@usersql" 를 인식 못하더군여...
MS-SQL이면 EXEC SQL BEGIN DECLARE SECTION 사용해서 글로벌변수에 쿼리를 넣으면 될것도 같은데 사이베이스는 그런게 없나봅니다.

무슨이유에서 안되는지 알려주십시오..

수고하세여~

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

우선 dynamic sql을 사용하셔야 하는데요..

 

이게 커서랑은 궁합이 잘 안맞아서...

 

exec(declare cursor~for @dbname)이케 하면

 

실행되긴 하는데....

 

open cursor이 안됩니다...(다른 세션으로 인식을 하는거 같습니다.)

 

 

하여간...그래서....

 

 

아마 dbuser와 login 정보를 한번에 보실려고 하시는 것 같은데요...

 

 

declare dbuser cursor for select name  from master..sysdatabases
open dbuser

declare @dbname varchar(30)
declare @result varchar(255)
fetch dbuser into @dbname
while (@@sqlstatus <> 2)
begin
select @result='select '''+@dbname+'''as ''DB_name'', a.name ''Login_name'', b.name ''User name'' from master..syslogins a,'+@dbname+'..sysusers b where a.suid=b.suid'
exec (@result)
fetch dbuser into @dbname
end
close dbuser
deallocate cursor dbuser

 

 

이렇게 바꿔서 그냉 했습니다.

 

 

원하시던게 이거면 수정해서 쓰시고요.

 

딴거면 저도 몰라요~~죄송..

지연님이 2005-03-16 14:34에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
1108바로 및에 질문답변주신분 감사합니다 한가지만더....
김호익
2005-03-16
3705
1107사이베이스 odbc는 어떻게 잡아야 하는지요 [3]
초보
2005-03-15
5361
1106BCP관련 질문 [1]
정태환
2005-03-15
4479
1105커서 선언시 로컬변수로 동적SQL 지정은 안되나여? [1]
박남준
2005-03-14
5620
1104문자를 숫자로 바꾸는 함수는 없는건가요 ??? [1]
이유창
2005-03-11
7891
1103java.sql.SQLException: JZ006: IOException 발견: java.net.ConnectException: Connection [3]
조현종
2005-03-11
7410
1102안녕하세요 Sybase 초보 입니다. [2]
조현종
2005-03-10
4660
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.033초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다