Avatar
gorshok
Člen
Avatar
gorshok:

Zdravím, mam takový problém... snažím se vytvořit proceduru, která vytáhne data z databáze, vloží je do dočasné tabulky, tam je promaže a vrátí zpátky... ale nedaří se mi nakopírovat data do tabulky #restable (tučně označeny)... pomohl by mi někdo? předem děkují.

ALTER PROCEDURE "DBA"."sv_clear_images"(@material_id material_)
AS
BEGIN

create table #restable(
data_type varchar(25) not null,
data_key varchar(128) not null,
cesta varchar(128) null,
nazev varchar(128) null,
pripona char(5) null
)

declare @documenty long varchar
select @dokumenty = dokumenty from DBA.omater
where id_material = @material_id

if (@dokumenty <> null)
begin



--!!!zde nakopirovat data do tabulky #restable!!!--
INSERT #restable
exec @dokumenty
--!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!--


--pak odstranit z tabulky  vse co má priponu jpg a nazev začíná na http
DELETE FROM #restable where pripona = 'jpg' and nazev like 'http://'

--pak zbytek zapsat do jedné buňky tabulky omater dle materal_id ve správném formátu, tj. {Vision32 ShellLink: nazevsouboru}{Vision32...}

declare @zbytek long varchar
select @zbytek = ''
select @zbytek = @zbytek + '{' + data_type + ':'+ nazev +'}' from #restable

--prepise dokumenty
update DBA.omater
set dokumenty = @zbytek
where id_material = @material_id

end

END
 
Odpovědět 5. dubna 10:32
Avatar
mixxy
Člen
Avatar
mixxy:

Pokud se dívám správně, tak ti tam chybí jedno slovíčko a to INTO :

insert INTO #restable
exec @dokumenty

Ale jak se tak dívám, to PL/SQL jde výrazně zjednodušit. Pokud budeš chtít, dej vědět a mrknem na to.

Nahoru Odpovědět 7. dubna 1:05
Neni dulezite mnoho vedet a znat. Dulezite je vedet, co je treba.
Avatar
gorshok
Člen
Avatar
Odpovídá na mixxy
gorshok:

už jsem tak zkoušel... INTO mi nepomohlo... ale vyřešil jsem to tak,  že jsem našel jinou proceduru, která mi nakopírovala data do tabulky... teď řeším Jíny problém: pokud @zbytek má víc než jeden soubor, potom vyhodí chybu: SELECT returns more than one row... asi musím dát @zbytek do cyklu?

 
Nahoru Odpovědět 7. dubna 11:56
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.