ďťż
 
[MS SQL 2000] jak wymusić konwersję ďťż
 
[MS SQL 2000] jak wymusić konwersję
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[MS SQL 2000] jak wymusić konwersję



Krzysztof Wiśniewski - 19-01-2006 09:33
[MS SQL 2000] jak wymusić konwersję
  Mam taką funkcję:

CREATE FUNCTION dbo.MojaFunkcja
(@Ilosc bigint, @Par1 int, @Par2 int)
RETURNS bigint AS
BEGIN
DECLARE @Zwroc bigint;
/* jakieś tam operacje na tych zmiennych */
RETURN @Zwroc;
END

Jeśli wywołuję ją w sposób następujący:
EXEC dbo.MojaFunkcja @Ilosc = 'NULL', @Par1 = 1, @Par2 = 2;

to dostaję błąd:
"Error converting data type varchar to bigint."

Szlag mnie trafia, bo próbowałem już wszystkiego, np:
SELECT dbo.MojaFunkcja(CONVERT(bigint, @Ilosc),1,2)

albo:
SELECT dbo.MojaFunkcja(ISNULL(@Ilosc,0),1,2)

i nawet wariant z CASE'ami, ale nic nie pomaga...

Pomóżcie...

--
Pozdrawiam,
Krzysiek





AreKc - 19-01-2006 09:33

  Krzysztof Wiśniewski napisał:

> EXEC dbo.MojaFunkcja @Ilosc = 'NULL', @Par1 = 1, @Par2 = 2;

Czy nie powinno być "@Ilosc = NULL"?

--
AreKc




Krzysztof Wiśniewski - 19-01-2006 09:33

 
Użytkownik "AreKc" <arekc@asterdotnet.pl> napisał w wiadomości
news:43cd6e0c$0$17929$f69f905@mamut2.aster.pl...
| Krzysztof Wiśniewski napisał:
|
| > EXEC dbo.MojaFunkcja @Ilosc = 'NULL', @Par1 = 1, @Par2 = 2;
|
| Czy nie powinno być "@Ilosc = NULL"?
|

Oczywiście że tak, tylko w przypadku przypisania wartości NULL funkcja
działa prawidłowo. Problem polega na tym, że niekiedy korzysta ona z danych
ściąganych z innych zbiorów, gdzie NULL jest interpretowane (zapisane?) jako
string, a więc ujęte w apostrofy.

Zresztą zamiast 'NULL' mógłbym napisać 'cokolwiek', chodzi mi o wymuszenie
konwersji jakiegoś stringu do wartości zero, gdy ten string nie da się
zinterpretować jako liczbę.

Pozdrawiam,
Krzysiek




AreKc - 19-01-2006 09:33

  Krzysztof Wiśniewski napisał(a):

> Oczywiście że tak, tylko w przypadku przypisania wartości NULL funkcja
> działa prawidłowo. Problem polega na tym, że niekiedy korzysta ona z
> danych ściąganych z innych zbiorów, gdzie NULL jest interpretowane
> (zapisane?) jako string, a więc ujęte w apostrofy.

Musisz chyba przeprowadzić konwersję na zewnątrz funkcji. Upewnij się, że w
"danych ściąganych z innych zbiorów" nie będzie apostrofów.

--
AreKc





Grzesiek G. - 19-01-2006 09:33

  Krzysztof Wiśniewski napisał(a):
> Użytkownik "AreKc" <arekc@asterdotnet.pl> napisał w wiadomości
> news:43cd6e0c$0$17929$f69f905@mamut2.aster.pl...
> | Krzysztof Wiśniewski napisał:
> |
> | > EXEC dbo.MojaFunkcja @Ilosc = 'NULL', @Par1 = 1, @Par2 = 2;
> |
> | Czy nie powinno być "@Ilosc = NULL"?
> |
>
> Oczywiście że tak, tylko w przypadku przypisania wartości NULL funkcja
> działa prawidłowo. Problem polega na tym, że niekiedy korzysta ona z danych
> ściąganych z innych zbiorów, gdzie NULL jest interpretowane (zapisane?) jako
> string, a więc ujęte w apostrofy.
>
> Zresztą zamiast 'NULL' mógłbym napisać 'cokolwiek', chodzi mi o wymuszenie
> konwersji jakiegoś stringu do wartości zero, gdy ten string nie da się
> zinterpretować jako liczbę.

CREATE FUNCTION dbo.MojaFunkcja
(@Ilosc VARCHAR, @Par1 int, @Par2 int)
RETURNS bigint AS
BEGIN
DECLARE @Zwroc bigint;

SET @Zwroc = (
SELECT CASE
WHEN @Ilosc = 'NULL' THEN 0
ELSE CAST(@Ilosc AS BIGINT)
END
)

RETURN @Zwroc;
END

--
Grzegorz Gruza
Odpowiadając usuń "spamerom_nie." z adresu!!!
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    jak to =?ISO-8859-2?Q?zrobi=E6=2E=2E=2E=3F_TSQL_sql_server?==?ISO-8859-2?Q?_?= =?iso-8859-2?Q?=5BMS_SQL=5D_Czy_mo=BFna_wywo=B3a=E6_funkcje_t ylko_raz_dla?==?iso-8859-2?Q?_ca=B3ego_zbioru_=BCr=F3d=B3owego=3F?= [MSSQL] =?ISO-8859-2?Q?zgodno=B6ci_z_licencjami_Microsoft_?==?ISO-8859-2?Q?SQL_Server?= Oracle PL/SQL Wstawianie =?ISO-8859-2?Q?wynik=F3w_kolekcji_d?==?ISO-8859-2?Q?o_tabeli?= =?iso-8859-2?Q?=5Bmssql=5D_Zapytania_rekurencyjne__-_czy_sk=B3adnia_sql?==?iso-8859-2?Q?_co=B6_takiego_przewiduje_=3F?= [Oracle PL/SQL] Cursor i zapis =?ISO-8859-2?Q?rekord=F3w_do_?==?ISO-8859-2?Q?kolejnych_plik=F3w?= =?iso-8859-2?Q?=5BMySQL=5D_Co_minimalnie_potrzebne_zeby_mie=E 6_klienta_My?==?iso-8859-2?Q?SQL_na_Linuxie=3F?= [oracle] - Oracle SQL Developer - co to jest SID? =?ISO-8859-2?Q?[Oracle]_Wywo=B3anie_skryptu_sh_z_PL/SQL-a=3F=3F?= [oracle] Baza danych do kursy Introduction to Oracle9i:PL/SQL ? Skąd ją pobrać ?
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lunadance.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com