» Poradna » Programy

Oracle procedura na SELECT

 |   | 

Zdravim, muzete mi nekdo poradit, jak v Oracle 10g vytvorit pojmenovany a ulozeny blok (zrejme procedura), ktery mi pouze provede prikaz SELECT .....

diky

Odpovědi na otázku

 |   | 

ctreate or replace procedure jsem_vul as

v_int integer;
begin

select id
into vIid
from jsemVul
where id=1;

end;


Kapisto?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

nejak prave nerozumim tomu into vIid? taky nevim proc tam deklaruji promennou v_int ?

diky moc

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

potřebuji z te procedury dostat ty hodnoty, z konzole si SELECT normalne vypisu, ale jak to predat z te procedury? co kdyz budu mit vetsi pocet vracenych vysledku?

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

Tomíku, to je nejen funkční, ale i vtipné )

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

ted trochu vazneji.

Doma nemam oracle, takze poradim postup.

dej typ parametru out na rowtype. napriklad.

p_return output mojeschema.mojetabulka%rowtype;

a v procedure dej

select *
into p_return
where id > 10;

a pak muzes vratit recordset, majici vice vet


Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

no a kdyz mam SELECT z nekolika tabulek, a zaroven treba nejaky agregovany atribut? nemuzu pouzit schema tabulky, protoze zadnou takovou nemam. zkousel jsem to pres nekolik promennych (%type), do kterych ukladam jednotlive atributy SELECTU, ale nejak mi to nechce vratit vice zaznamu

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

napr. SELECT jmeno, prijmeni FROM Clovek WHERE vek > 22; kde Clovek(id,jmeno,prijmeni,vek,adresa)

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

ORA-01422: exact fetch returns more than requested number of rows

diky

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 


skus pouzit
TYPE type_tab IS TABLE OF tab%rowtype;
var_tab type_tab;
select * BULK COLLECT INTO var_tab from tab;
for i in var_tab.first .. vat_tab.last
loop
  dbms_output.put_line(var_tab(i).st lpec);
end loop
 

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

nejak nevim, porad mi to hlasi chybu
CREATE OR REPLACE PROCEDURE zobraz_plodiny (nazev CHAR, cena NUMBER) AS
DECLARE
TYPE type_tab IS TABLE OF Pokus.Plodina%rowtype;
p_tab type_tab;
BEGIN
SELECT nazev_plodiny, nazev_odrudy, cena_osiva BULK COLLECT INTO p_tab FROM Plodina WHERE nazev_plodiny=nazev AND cena_osiva=cena;
FOR i IN p_tab.FIRST .. p_tab.LAST
LOOP
DBMS_OUTPUT.PUT_LINE(p_tab(i).nazev_plodiny);
END LOOP;
END zobraz_plodiny;
/

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

mozno to je tym ze nie su v selecte uvedene vsetky stplce z Plodina, skus select *
jednoduchsie riesenie na jednorazove pouzitie moze byt:
for rec in (select * from Plodina where nazev_plodiny=nazev AND cena_osiva=cena)
loop
  dbms_output.put_line(rec.nazev_plodiny);
end loop;
ak som sa nepomylil. Pricom rec nema byt deklarovane.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

procedura se vytvorila bez chyby, dokonce jsem ji spustil: PL/SQL procedure successfully completed. ale zadny vystup na cmd :(

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

pritom kdyz stejny SELECT provedu primo na prikazovem radku, dostanu pozadovany vysledek

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

vyskusal by som spustit len dbms_output.put_line('test');
ci to vobez nieco vypisuje

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

nevypsalo to nic asi nejake nastaveni, ale nevim jake??

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

ja pouzivam pl/sql developer vystup zobrazuje v specialnom okne,
mozno pomoze vyskusat nieco z tadialto
http://www.psoug.org/reference/dbms_output.html

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

uz to jede, musel jsem nastavit serveroutput on no ale to je jen cast meho zajmu, protoze ja bych pak ten vystup z ORACLE potreboval namapovat na nejakou tridu v APS.NET (C#) a ten vystup DBMS_OUTPUT asi neni to prave, ne??

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

tak to by som ten select spustal priamo aps.net

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

tak to by som ten select spustal priamo v aps.net

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

prave ze mame mit funkcnost v procedurach na strane serveru :)

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Oracle, Procedura, Select, Blok




Určitě si přečtěte

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

Sex a rozmnožování při mezihvězdné cestě: Kolik lidí je potřeba pro let k Proximě Centauri?

** Vědci spočítali, jak velká by musela být posádka pro vícegenerační let k nejbližší hvězdné soustavě ** Proxima Centauri se nachází 4,3 světelných let od nás ** Za současných technologií bychom k ní letěli 6300 let

Petr Kubala | 53

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

15 věcí, které umí Windows 10, ale možná o nich vůbec nevíte

** Systém Windows 10 umí spoustu užitečných drobností ** O mnoha praktických funkcích pravděpodobně ani nevíte ** Poznejte užitečné tipy, které se vám mohou hodit každý den

Vladislav Kluska | 36

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Šmírovačka kamerami Googlu: Koukněte se, co nového zachytily na Street View

Google stále fotí celý svět do své služby Street View. A novodobou zábavou je hledat v mapách Googlu vtipné záběry. Podívejte se na výběr nejlepších!

redakce | 44

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

Rekordy počasí: V Česku to ještě jde, skutečné extrémy zažívají jinde

** Teplotní extrémy dokážou překvapit. Seznamte se s rekordy v Česku i ve světě ** Rekordní hodnoty jsou mnohdy až k neuvěření ** Zjistěte, kdy ke bylo největší horko, zima, déšť či vítr

Karel Kilián | 7

Byli tam! Důkazy o přistání na Měsíci, Lunochody i čínská sonda jsou vidět z vesmíru

Byli tam! Důkazy o přistání na Měsíci, Lunochody i čínská sonda jsou vidět z vesmíru

** Sonda LRO pořídila z oběžné dráhy Měsíce zajímavé snímky ** Jsou na nich vidět artefakty všech misí programu Apolla, které přistály na povrchu Měsíce ** Jde například o části lunárních modulů, rovery a dokonce i vlajky

Petr Kubala | 60

Nechcete platit za Total Commander? Těmito bezplatnými programy ho můžete nahradit

Nechcete platit za Total Commander? Těmito bezplatnými programy ho můžete nahradit

** Total Commander je na Windows takřka legendou ** Licence však stojí více než tisíc korun ** Našli jsme pro vás deset alternativ dostupných zdarma

Karel Kilián | 141


Aktuální číslo časopisu Computer

Velký test 18 bezdrátových sluchátek

Vše o přechodu na DVB-T2

Procesory AMD opět porážejí Intel

7 NVMe M.2 SSD v přímém souboji