cursor와 fetch를 이용해서 datagrid에 data반입시 여러 row를 한번에 델파이에
datagrid에 반입시키는 방법좀 가르쳐 주세요...
죄송하지만 메일로 답을 좁 부탁드립니다....
메일 thekarma@korea.com
t0001에 구조
CREATE table t0001
(
id char(02),
name varchar(20)
)
ex)
CREATE procedure ex00
@cnt int output,
@id char(02) output,
@name varchar(20) output,
@nicname varchar(20) output
as
set @cnt = 0
set @nicname = ''
declare ex00_c cursor for
select id, name,
'nicname' =
case id
when '01' then 'Tost Man'
when '02' then 'Silver'
when '03' then 'Blues Lee'
else 'Etc'
end
from t0001
open ex00_c
fetch next from ex00_c
into @id, @name, @nicname
while @@fetch_status = 0
begin
select @cnt, @id, @name, @nicname
fetch next from ex00_c
into @id, @name, @nicname
set @cnt = @cnt + 1
end
close ex00_c
deallocate ex00_c
> cursor와 fetch를 이용해서 datagrid에 data반입시 여러 row를 한번에 델파이에
> datagrid에 반입시키는 방법좀 가르쳐 주세요...
> 죄송하지만 메일로 답을 좁 부탁드립니다....
>
> 메일 thekarma@korea.com
>
> t0001에 구조
> CREATE table t0001
> (
> id char(02),
> name varchar(20)
> )
>
> ex)
> CREATE procedure ex00
> @cnt int output,
> @id char(02) output,
> @name varchar(20) output,
> @nicname varchar(20) output
> as
> set @cnt = 0
> set @nicname = ''
>
> declare ex00_c cursor for
> select id, name,
> 'nicname' =
> case id
> when '01' then 'Tost Man'
> when '02' then 'Silver'
> when '03' then 'Blues Lee'
> else 'Etc'
> end
> from t0001
>
> open ex00_c
>
> fetch next from ex00_c
> into @id, @name, @nicname
>
> while @@fetch_status = 0
> begin
> select @cnt, @id, @name, @nicname
> fetch next from ex00_c
> into @id, @name, @nicname
> set @cnt = @cnt + 1
> end
>
> close ex00_c
> deallocate ex00_c
일반적으로 MS-SQL이나 ORACLE 에서는 멀티 데이터 셋 리턴을 지원하지 않는 것으로 알고 있습니다.
INFORMIX SPL에서는 지원하고 있지만...
결론적으로 MS-SQL이나 ORACLE은 CURSOR 안에서 임의의 데이터 셋을 여러번 반복해서 리턴 시킬 수 없다는 것입니다.
인포믹스의 경우는 FOREACH구문안에서 RETURNING이 가능합니다.
위와같은 경우는 PARAMETER를 받아서 커서없이 SQL문으로 가능합니다.
그럼...