Vytvoreni pretypovavaci fce v PgSQL

"Zíka Aleš, Ing." Ales.Zika na pel.cb.ds.mfcr.cz
Středa Srpen 23 13:44:34 CEST 2000


> 
> test=# select bpchar('10')::text::int;
>  ?column?
> ----------
>        10
> (1 row)
> 
> tedy bpchar na text a text na int, pocjopitelne zaplatite rychlosti...
> 
	Diky!


> > 	Da se nejak napsat pretypovavaci funkce CHAR->INT a 
> hlavne, donutit
> 
> 
> test=# CREATE FUNCTION mycast( bpchar ) RETURNS int
> test-# AS 'SELECT $1::text::int' LANGUAGE 'SQL';
> CREATE
> test=# select mycast( '10' );
>  mycast
> --------
>      10
> (1 row)
> 
	Tohle je dobry, ale kdyz se mi nelibi syntax s volanim funkce, ale
chtel bych pouzit syntaxi se ctyrteckou? Jde to, nebo je to natvrdo
zakodovany, ze ctyrtecka funguje jen pro standardni typy?

> 
> > PgSQL, aby ji v tomto pripade automaticky pouzil?
> 
>  Tomudle nerozumim...
> 

	Dejme tomu, ze vytvorim nejaky novy typ, aby to bylo kompatibilni s
beznymy typy rekneme velmi presny float treba na 50 platnych mist, napr. pro
astronomicke vypocty, nazveme ho ASTRO. A ted bych chtel PgSQL vybavit sadou
pretypovavacich funkci (ASTRO <-> INT, ASTRO <-> FLOAT, ...) tak, aby je
umel automaticky, pouzivat ve vyrazech, kde se kombinuji typy.
	Tedy aby sel napsat vyraz ASTRO = ASTRO + INT, bez nutnosti nejakeho
explicitniho pretypovavani. Urcite by to slo tak, ze bych definoval sadu
operatoru pro ruzne kombinace typu, ale napr. C++ kdyz nenajde vhodny
operator, se jeste pokousi pretypovavat operandy a pretypovavci funkce se
daji taky doplnovat, jak je na tom PgSQL.


			Ales Zika
			Pelhrimov

			e-mail: Ales.Zika na pel.cb.ds.mfcr.cz
				  Ales.Zika na seznam.cz
			SMS:    Ales.Zika na sms.underground.cz




Další informace o konferenci Test