Gacha Posted November 30, 2004 Report Share Posted November 30, 2004 Atradu daudz viss visādus manuāļus, tutoriāļus utt, bet tā īsti līdz gaam nesapratu, kā lai pareizi izmanto jau gatavas procedūras. Gribu panākt kaut košādu: SELECT viens, divi, my_proc(tris) AS tris FROM TABHULA zinu, ka sintakse nav tada, ka vajaga, bet cerams, ka sapratāt :) Link to comment Share on other sites More sharing options...
рпр Posted November 30, 2004 Report Share Posted November 30, 2004 saucaas triggeri, nezinu vai mysql tagad taada fiicha ir, bet agraak nebija. Link to comment Share on other sites More sharing options...
Gacha Posted November 30, 2004 Author Report Share Posted November 30, 2004 Man jau nevajaga Mysqlm bet Interbazei Link to comment Share on other sites More sharing options...
Kaklz Posted November 30, 2004 Report Share Posted November 30, 2004 saucaas triggeri, nezinu vai mysql tagad taada fiicha ir, bet agraak nebija. triggeris jau nu ir pavisam kaut kas cits. Triggeris ir kaut kāds darbību kopums, kas tiek izveikts automātiski pie kaut kādām darbībām datubāzē. Teiksim uzliekam trigeri lietotāju datu tabulai, ka gadījumā, ja kāds jauns lietotājs piereģistrējas (notiek insert darbība tabulā), tad tiek aizsūtīts e-pasts sistēmas administratoram. Stored procedures ja nemaldos ir paredzeetas MySQL sākot ar versiju 5.0. Tā kā tikko ir palaista tautās (production ready) tikai 4.1, tad par MySQL un stored procedures var uz brīdi aizmirst. Ja runa ir par kādu DB pārvaldības sistēmu, kas atbalsta stored procedures, tad attiecīgi uz servera ir jāizpilda SQL fragments, kas līdzīgi kā veido tabulas, uzveidos arī pašu procedūru. Link to comment Share on other sites More sharing options...
bubu Posted November 30, 2004 Report Share Posted November 30, 2004 zinu, ka sintakse nav tada, ka vajaga, bet cerams, ka sapratāt :) Īsti nesapratu gan. Ja tu domā tieši sintakse kā izsauc funkcijas/procedūras, tad jau tev fja ir pareizi izsaukta. Par procedūrām nedaudz atšķirās katram SQL serverim. Skaties IBase dokumentācijā kā. A ja tu prasīji tieši par pašu definēšanas sintaksi, tad kas gan vēl varētu būt labāks par manuāli :) Link to comment Share on other sites More sharing options...
Gacha Posted November 30, 2004 Author Report Share Posted November 30, 2004 Nu tur jau tā problēma, ka njo dokumentācijas, tā īsti nevaru izprast. Piemēram šeit viss ir smuki izskaidrots. Sapratu, kā to procedūru izveido, bet kā pareizi dabūt to pie lietošanas, gan nesapratu: kau4kāds manuālis Link to comment Share on other sites More sharing options...
bubu Posted November 30, 2004 Report Share Posted November 30, 2004 (edited) Tur tak rakstīts kā jāizsauc: http://bdn.borland.com/article/0,1410,2719...ored_Procedures Piemēram: EXECUTE PROCEDURE ADJUST_SALARY_RANGE(1.1); Edited November 30, 2004 by bubu Link to comment Share on other sites More sharing options...
Gacha Posted November 30, 2004 Author Report Share Posted November 30, 2004 Ta es ari dariju, bet ka, lai pieshkjir kadam mainigajam atgriezto vertibu? SQL: execute procedure procedura(); <-- inputam ir :inputs un autputam :output Select viens, :inputs AS divi, tris AS :outputs FROM TABULA Vēlos kaut ko šādu panākt ;) Link to comment Share on other sites More sharing options...
bubu Posted November 30, 2004 Report Share Posted November 30, 2004 Ā, tev funkciju vajag! Tas execute tikai procedūrām strādā. Tad turpat vien arī ir piemērs: funkcija ORDER_LIST kurai padod CUST_NO kā ieejas parametru, un fja atgriež PO_NUMBER kā rezultātu. SELECT * FROM ORDER_LIST(:CUST_NO) WHERE (PO_NUMBER > :PO_NUMBER) ORDER BY PO_NUMBER DESC Link to comment Share on other sites More sharing options...
Gacha Posted November 30, 2004 Author Report Share Posted November 30, 2004 Lieta ir tāda, ka stradaju ar vienu datubāzi, kur ir jau iebuvetas dažas noderigas proceduras attiecīgo datu apstrādei. Vēlos izmantot kādu no tām procedūrām, lai atlasītu datus. Gribu padot procedūrai 2 parametrus, kurus iegūstu esoshajā selektā un tad rezultātu piešķirt arī kādam mainīgajam. Link to comment Share on other sites More sharing options...
bubu Posted November 30, 2004 Report Share Posted November 30, 2004 (edited) Nu pieņemsim tev definēta šāda procedūra: CREATE PROCEDURE MY_PROC (IN_PARAM_1 INTEGER, IN_PARAM_2 INTEGER) RETURNS (OUT_PARAM INTEGER) AS BEGIN ... END Tad tās izsaukšanai būtu jāizskatās šādi: SELECT OUT_PARAM FROM MY_PROC(5, 6) Tie koli laikam vispār ir vajadzīgi tikai Delphi ;) Edited November 30, 2004 by bubu Link to comment Share on other sites More sharing options...
Gacha Posted November 30, 2004 Author Report Share Posted November 30, 2004 Tad sanāk, ka es ar vienu sql pieprasijumu iegustu rezultatu no procedūras, bet vai es tai pasha 'querijā' varu vel veikt darbības? ibase_query($con, " SELECT OUT_PARAM FROM MY_PROC(LAUKS1, LAUK2) WHERE KAUTKAS=KAUTKO; SELECT FINISHS AS OUT_PARAM, LAUK3,LAUK4,LAUKS5 WHERE KAUTKAS=KAUTKO "); Nu doma ir tāda, ka gribu viena un tai pasha pieprasijumā parveidot datus ar to proceduru un tad pieshkjirt to kada mainigajam un vel ari atlasit visus parejos nepiecieshamos datus. Link to comment Share on other sites More sharing options...
bubu Posted November 30, 2004 Report Share Posted November 30, 2004 (edited) Tur jau nu subselekts jātaisa. Piemēram, lai pielietotu to MY_PROC visiem tabulas ierakstu a un b laukiem: SELECT tabula.ID, x.OUT_PARAM FROM tabula, (SELECT OUT_PARAM FROM MY_PROC(tabula.a, tabula.b)) x Edited November 30, 2004 by bubu Link to comment Share on other sites More sharing options...
Gacha Posted November 30, 2004 Author Report Share Posted November 30, 2004 Kur man te vaina: SELECT OBJEKTI.OBJ_CENA, OBJEKTI.C_LK_VALUTA, X.ARATE FROM OBJEKTI, (SELECT ARATE FROM GETVALKURSS(OBJEKTI.C_LK_VALUTA, 'LVL', 'TODAY')) X PS. ARATE ir tas kas atgriezhas Link to comment Share on other sites More sharing options...
bubu Posted November 30, 2004 Report Share Posted November 30, 2004 Kādu kļūdu atgriež? Link to comment Share on other sites More sharing options...
Recommended Posts