Dnes: 19. srpna 2017    | Registrace | Hledáme | Redakce | Info | Testy | Školení | Ocenění | Nápověda | Čtenář: nepřihlášen

Rychlé odkazy
  • Hlavní stránka
  • Seznam rubrik
  • Ankety
  • Editoriály
  • TOP 15
  • KONFERENCE 2008
  • KONFERENCE 2007
  • KONFERENCE 2006
  • KONFERENCE 2005
  • KONFERENCE 2004
  • Sborník
  • Testy
  • Virtuální školení
  • Personalizace


  • Hledáte práci?
    Hledáme redaktora - pojďte s námi tvořit Databázový svět!

    Vyhledávání

    Hledej
    na Databázovém světě!



    Rozšířené vyhledávání

    Rubriky
    Aktuality
    Bezpečnost
    Business
    Česká scéna
    Datové sklady
    Dokumentace
    Dotazovací jazyky
    Hardware
    Historie
    Komentáře
    Literatura
    Metodologie
    Nondb
    Open Source
    Poradna
    Produkty
    Případové studie
    Redakce
    Rozhovory
    Standardy
    Technologie
    Tipy - triky
    Tiskové zprávy
    Vývoj
    Vývojové nástroje
    Zajímavosti

    Co je to?
    Datový sklad
    Tento pojem poprvé formuloval koncem 80. let William Inmon jako strategii přístupu k datům určeným pro rozsáhlé analýzy. V případě datového skladu hovoříme o historických, časově rozlišených, agregovaných, průběžně rozšiřovaných datech uspořádaných pro podporu potřeb managementu.

    Akce
    Dynamická Datová Centra
    - na semináři se seznámíte s komplexním řešením a koncepcí Dynamických Datových Center od Fujitsu Siemens Computers se speciálním důrazem na řešení FlexFrame.

    Textová inzerce
    IBPhoenix - Vše o InterBase a Firebirdu.

    Smějete se rádi? - Pak je pro vás Vtipník to pravé!

    Prodejce reklamy - Hledáme schopného prodejce reklamního prostoru, možnost i externí spolupráce.

    Přihlášený čtenář
    Nepřihlášený čtenář

    O portálu
    Databázový svět
    ISSN: 1213-5933

    Web je optimalizován pro rozlišení 1024x768, nicméně kromě větších rozlišení podporujeme i 800x600. Podrobnosti najdete zde.

    Chcete-li mít kdykoliv možnost zkontrolovat obsah našeho portálu, můžete využít podporu rss. Podrobnosti najdete zde.
    Firebird .NET and SP with parameters


    [Produkty] - Firebird .NET provider has ability to create parameterized queries. Both named and unnamed parameters are supported. Everything works as you expect with select, insert, delete or update commands. The tricky part comes with stored procedures. Unlike MS SQL, that has direct support for named parameters, in provider, we’re parsing parameter names and we’re sending it to server "in right order", so developer doesn’t need to know, that internally parameters were send unnamed.



    But with stored procedure you (developer) expect, that creating named parameter with same name as parameter in stored procedure, the parameter will be sent to right SP’s parameter. Let see this example. First we create simple procedure:

     1 SET TERM ^;
     2 
     3 CREATE PROCEDURE TestSP 
     4  ( a int, b int ) 
     5 RETURNS 
     6  ( result int )
     7 AS 
     8 BEGIN
     9   result = a - b;
    10   suspend;
    11 END^
    12 
    13 SET TERM ;^

    When you test call it, i.e. select * from TestSP(10, 5); you get expected result (5). Now create simple program:

     1 using (FbConnection conn = new FbConnection(@"data source=localhost;initial catalog=ucime;user id=SYSDBA;password=masterkey"))
     2 {
     3     conn.Open();
     4     using (FbCommand cmd = conn.CreateCommand())
     5     {
     6         cmd.CommandText = "TestSP";
     7         cmd.CommandType = CommandType.StoredProcedure;
     8         cmd.Parameters.Add("@b", FbDbType.Integer).Value = 5;
     9         cmd.Parameters.Add("@a", FbDbType.Integer).Value = 10;
    10         int result = (int)cmd.ExecuteScalar();
    11         Console.WriteLine(result);
    12     }
    13 }

    When you run it, you got -5 on the output. What’s wrong? Well, as I stated above, Firebird has no support for named parameters and provider isn’t aware of name of parameters in stored procedure, in fact you can name it whatever you want, because only thing that matter is the order of parameters.

    Solution? Well it’s pretty easy. Use "select <column> from <stored procedure>" or "execute procedure <stored procedure>" instead of defining CommandType as StoredProcedure (internally is this handled in same way). The fragment could look like:

    1 cmd.CommandText = "select * from TestSP(@a, @b);";
    2 //cmd.CommandType = CommandType.StoredProcedure;
    3 cmd.Parameters.Add("@b", FbDbType.Integer).Value = 5;
    4 cmd.Parameters.Add("@a", FbDbType.Integer).Value = 10;

    I hope this helps prevent some confusion when using Firebird database in .NET using FirebirdClient (when using parameterized queries, which are sign of good programming style).



    ( Celý článek! | Autor: Jiří Činčura | Počet komentářů: 9 | Přidat komentář | Informační e-mailVytisknout článek )

    Vyhledávání
     

    Anketa
    Kolik ročně utratíte za dovolené?

    Nic 
     (1396 hl.)
    Do 1 000,- Kč 
     (982 hl.)
    Do 10 000,- Kč 
     (926 hl.)
    Do 25 000,- Kč 
     (1181 hl.)
    Do 50 000,- Kč 
     (940 hl.)
    Do 75 000,- Kč 
     (1079 hl.)
    Více než 75 000,- Kč 
     (924 hl.)

    Celkem hlasovalo: 7428


    Poslední komentáře
    frontierd@126.com
    frontierd@126.com
    frontierd@126.com
    c
    http://www.coachoutl

    Newsletter
    Přihlaste si nezávazně - i bez registrace - odběr informačního newsletteru. Podrobné informace najdete zde.

    Emailová adresa:


    Kalendář
    <<  Srpen  >>
    PoÚtStČtSoNe
     123456
    78910111213
    14151617181920
    21222324252627
    28293031   

    Redakci připojuje


    Nejčtenější

    Databáze je prázdná!


    Nejvíce komentářů

    Databáze je prázdná!


    Reklama






    Nenechte si ujít články na dalších webech




    Na této stránce použité názvy programových produktů, firem apod. mohou být ochrannými známkami
    nebo registrovanými ochrannými známkami příslušných vlastníků.

    Databázový svět | dfKlub - digitální fotografie | Vtipník - vtipy přímo k Vám | Reminder - přestaňte zapomínat | Databázový svět

    Copyright (c) 2004 AVRE Publishing, spol. s r.o. Všechna práva vyhrazena