아래와 같이 프로시져로 작성하여 이중커서로 결과를 얻으려고
합니다.
두번째 커서에서 커서선언시 동적으로 첫번째 커서로 부터 얻은
테이블명으로 로컬변수에
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 사용해서 글로벌변수에
쿼리를 넣으면 될것도 같은데 사이베이스는 그런게 없나봅니다.
무슨이유에서 안되는지 알려주십시오..
수고하세여~
|