|
wb_get_xml_form | XML přenosy dat |
Tento popis se týká parametru hostvars funkcí wb_export_to_xml, wb_export_to_xml_buffer, wb_import_from_xml a wb_import_from_xml_buffer.
Tento parametr musí mít buď hodnotu NULL, pokud nechceme předávat popis žádné klientské proměnné (resp. v tomto případě nemusíme parametr hostvars při volání funkce vůbec uvádět), nebo musí být polem, jehož prvky mají následující strukturu:
Před provedením přenosu dat se PHP hodnoty parametrů konvertují na hodnoty databázového typu, který je uveden v popisu parametru. Po přenosu dat se opačným směrem konvertují hodnoty výstupních parametrů.
Pro jakýkoliv typ parametru platí, že pokud bude jako jeho hodnota předána PHP hodnota NULL, pak bude SQL serveru předána SQL hodnota NULL odpovídajícího databázového typu.
typ parametru | přípustné PHP hodnoty |
ATT_BOOLEAN | hodnoty typu boolean, resp. takové, které lze převést na tento PHP typ |
ATT_INT8, ATT_INT16, ATT_INT32, ATT_INT64 | hodnoty typu int, resp. takové, které lze převést na tento PHP typ; pokud hodnota přesahuje rozsah daného db. typu, bude vyvolána chyba |
ATT_INT8, ATT_INT16, ATT_INT32, ATT_INT64 s "scale">0 | hodnoty typu int, nebo float, resp. takové, které lze převést na tyto PHP typy; pokud hodnota přesahuje rozsah daného db. typu, bude vyvolána chyba |
ATT_MONEY, ATT_FLOAT | hodnoty typu float, resp. takové, které lze převést na tento PHP typ; pokud hodnota přesahuje rozsah daného db. typu, bude vyvolána chyba |
ATT_STRING, ATT_TEXT | hodnoty typu string, resp. takové, které lze převést na tento PHP typ |
ATT_STRING, ATT_TEXT s "wide_char"=TRUE |
hodnoty typu string, resp. takové, které lze převést na tento PHP typ; navíc:
předaná hodnota bude na SQL server odeslána až po její konverzi do kódování UCS-2, původní PHP hodnotu to ale neovlivní |
ATT_DATE |
|
ATT_TIME |
hodnota typu string, resp. taková hodnota, kterou lze na tento typ zkonvertovat; string musí být validním zápisem konstanty typu TIME dle požadavků funkce z 602SQL API Str2time |
ATT_TIMESTAMP |
|
Hodnota NULL bude vždy vrácena jako PHP hodnota NULL.
typ výstupního parametru | PHP hodnota |
ATT_BOOLEAN | PHP typ boolean |
celočíselné typy do velikosti 32 bitů, tj. ATT_INT8, ATT_INT16 a ATT_INT32 | PHP typ int |
ATT_INT64 | pokud lze hodnotu reprezentovat PHP typem int (který je 32-bitový), pak bude vrácena jako hodnota tohoto typu, jinak bude vrácena jako hodnota typu float, ale v tom případě pravděpodobně dojde ke ztrátě přesnosti čísla |
celočíselné typy ATT_INT8, ATT_INT16, ATT_INT32 a ATT_INT64, které mají "scale">0 | PHP typ float |
ATT_MONEY, ATT_FLOAT | PHP typ float |
ATT_STRING, ATT_TEXT | PHP typ string |
ATT_STRING, ATT_TEXT s "wide_char"=TRUE | PHP typ string, přičemž vrácený string bude v kódování UTF-8 |
ATT_DATE | PHP typ int, přičemž vrácené číslo bude přestavovat Unix time první sekundy (tj. času 00:00) toho dne, který je reprezentován hodnotou typu DATE |
ATT_TIME | PHP typ string, přičemž vrácený řetězec bude obsahovat zápis daného času |
ATT_TIMESTAMP | PHP typ int, přičemž vrácené číslo bude přestavovat Unix time časového okamžiku reprezentovaného danou hodnotou typu TIMESTAMP |
ATT_BINARY, ATT_NOSPEC |
PHP typ string, přičemž každý bajt dané binární hodnoty bude reprezentován dvěma znaky, které jsou zápisem daného bajtu v hexadecimální číselné soustavě např. bajt s ASCII kódem 32 (dekadicky) bude reprezentován podřetězcem "20", nebo bajt s ASCII kódem 13 (dekadicky) bude reprezentován podřetězcem "0d" |
Příklad 1: Předání dvou vstupních klientských proměnných, první je typu INT, druhá je typu VARCHAR.
Pokud nemáme v DADu výstupní proměnnou, můžeme uvést hodnotu parametru hostvars jako konstantu typu pole.
wb_export_to_xml($connection,"*testdad","outfile.xml",NULL, array( // první proměnná se jmenuje cislo "cislo" => array( // je typu ATT_INT32, tj. INT "type" => ATT_INT32, // a její vstupní hodnota je 123456 "value" => 123456 ), // druhá proměnná má jméno retezec "retezec" => array( // je typu ATT_STRING, tj. VARCHAR "type" => ATT_STRING, // vstupní hodnota je "abcdefgh" "value" => "abcdefgh" ) ) );
Příklad 2: Předání vstupně-výstupní klientské proměnné typu NCLOB.
V případě existence výstupní proměnné musíme hodnotu parametru hostvars zadat jako odkaz na proměnnou typu pole, jinak bychom nemohli po provedení funkce přečíst výstupní hodnotu klientské proměnné.
wb_set_client_encoding($connection, WB_ENC_UTF8); $hostvars=array( // proměnná se jmenuje uniclob "uniclob" => array( // je typu ATT_TEXT "type" => ATT_TEXT, // a je to Unicode CLOB "wide_char" => TRUE, // vstupní hodnota je tento UTF-8 řetězec (editujeme v UTF-8) "value" => "Test s háčky.", // výstupní buffer bude mít velikost 500 Unicode znaků // pokud bychom velikost bufferu nepředepsali, // byl by tak velký, aby obsáhnul vstupní hodnotu, // tj. 13 znaků "length" => 500, // je to OUT proměnná "out" => TRUE ) ); wb_import_from_xml($connection,"*importdad","infile.xml",$hostvars); // výstupní hodnotu klientské proměnné (řetězec v kódování UTF-8) přečteme takto echo $hostvars["uniclob"]["value"];
Příklad 3: Předání vstupně-výstupní klientské proměnné typu NCLOB.
Pokud hodnoty vstupně-výstupních proměnných předáme v PHP proměnných, můžeme parametr hostvars uvést jako konstantu typu pole. Výstupní hodnoty klientských proměnných budou zapsány do odpovídajících PHP proměnných. Musíme ale v poli uvést REFERENCI na PHP proměnnou, jinak by se výstupní hodnota parametru zapsala ne do PHP proměnné, ale do pole (které by bylo vzápětí zničeno)!
// hodnotu klientské proměnné máme v PHP proměnné $uniclob_value wb_import_from_xml($connection,"*importdad","infile.xml", array( // proměnná se jmenuje uniclob "uniclob" => array( // je typu ATT_CLOB "type" => ATT_CLOB, // a je to Unicode CLOB "wide_char" => TRUE, // vstupní hodnota je v PHP proměnné // proměnnou musíme předat referencí!!! "value" => &$uniclob_value, // výstupní buffer bude mít velikost 500 Unicode znaků "length" => 500, // je to OUT proměnná "out" => TRUE ) ) ); // výstupní hodnota klientské proměnné (řetězec v kódování UTF-8) je v PHP proměnné echo $uniclob_value;
wb_get_xml_form | XML přenosy dat |