Fonksiyon çağırma problemi hakkında yardım (Çözüldü)

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Fonksiyon çağırma problemi hakkında yardım (Çözüldü)

Mesaj gönderen adelphiforumz »

S.A.

aşağıdaki şekilde bir fonksiyon yazdım fonksiyon derleme aşamasında sorun vermiyor fakat çağırdığımda sorun oluyor nedeni ne olabilir.

Teşekkürler;

Oluşturduğum fonksiyon

Kod: Tümünü seç

USE [TESTDB]
GO
/****** Object:  UserDefinedFunction [dbo].[fn_ConvertHexToBigint]    Script Date: 04/13/2011 17:19:50 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER FUNCTION [dbo].[fn_ConvertHexToBigint] (@HexStr as Varchar(10))
RETURNS bigint  AS  
BEGIN 
  DECLARE @exec AS NVARCHAR(50), @result BIGINT
  SET @exec = 'SET @result = CAST(0x'+ @hexstr + ' AS BIGINT)'
  EXEC sp_executesql @exec, N' @result BIGINT OUTPUT', @result OUTPUT
  Return (SELECT @result)
END
Çağırdığım kısım

Kod: Tümünü seç

SELECT  dbo.fn_ConvertHexToBigint('FFFFFFFF') AS DENEME
Eger kodları bu şekilde çalıştırırsamda herşy normal görünüyor

Kod: Tümünü seç

  DECLARE @exec AS NVARCHAR(50), @result BIGINT
  SET @exec = 'SET @result = CAST(0x'+ 'FFFFFFFF' + ' AS BIGINT)'
  EXEC sp_executesql @exec, N' @result BIGINT OUTPUT', @result OUTPUT
  SELECT @result
En son adelphiforumz tarafından 14 Nis 2011 02:01 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Fonksiyon çağırma problemi hakkında yardım

Mesaj gönderen orhancc »

Sorun ne ?
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Fonksiyon çağırma problemi hakkında yardım

Mesaj gönderen adelphiforumz »

Kod: Tümünü seç

  DECLARE @exec AS NVARCHAR(50), @result BIGINT
  SET @exec = 'SET @result = CAST(0x'+ 'FFFFFFFF' + ' AS BIGINT)'
  EXEC sp_executesql @exec, N' @result BIGINT OUTPUT', @result OUTPUT
  SELECT @result
Çalıştırıldığında çıkan sonuç : 4294967295 Sonuç Doğru

Kod: Tümünü seç

SELECT  dbo.fn_ConvertHexToBigint('FFFFFFFF') AS DENEME
Çalıştırıldığında Gelen mesaj
Msg 557, Level 16, State 2, Line 1
Only functions and some extended stored procedures can be executed from within a function.

Eğer fonksiyon içerisinden geri dönüş değerini sabir olarak atarsam geri dönüş alabiliyorum
neden fonksiyon kendi işini bitirince yukarıdaki hatayı alıyorum
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Fonksiyon çağırma problemi hakkında yardım

Mesaj gönderen sabanakman »

Bu türden bir yapıya sahip SQL Fonksiyon kullanımına cevap varsa bilmek isterim aslında bir zamanlar birisinin bu konuyu aradığını hatırlıyorum ama sonuç ne oldu haberim yok (sonuç çıksaydı haberim olurdu ama konu çok eski olduğundan kaybettim :mrgreen: ). 16'lı çevrim muhakkak bana lazım diyorsanız denenmiş kodlar verilmişti zaten. viewtopic.php?f=27&t=28950&p=p160414#p160414
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
adelphiforumz
Üye
Mesajlar: 602
Kayıt: 01 Nis 2008 05:38
Konum: İstanbul

Re: Fonksiyon çağırma problemi hakkında yardım

Mesaj gönderen adelphiforumz »

ilgilenen tüm arkadaşlara teşekkürler
Dün bulduğum örneği biraz değiştirip fonksiyon haline getirdim.

Kod: Tümünü seç

USE [TESTDB]
GO
/****** Object:  UserDefinedFunction [dbo].[fn_ConvertHexToBigint]    Script Date: 04/14/2011 13:47:41 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER FUNCTION [dbo].[fn_ConvertHexToBigint] (@HexStr as Varchar(10))
RETURNS bigint  AS  
BEGIN 
  Return (SELECT CONVERT(bigint, CONVERT(varbinary, right('000000000' + cast(@HexStr as varchar(10)), 10), 2)))
END
Fonksiyonu cagirmak icin

Kod: Tümünü seç

SELECT  dbo.fn_ConvertHexToBigint('FFFFFFFF') AS HEX2DECNO
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız.
Mevlana
Cevapla