exec sp_executesql icine varchar veri gömme

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ı
metemete
Üye
Mesajlar: 422
Kayıt: 21 Mar 2004 12:30
Konum: samsun
İletişim:

exec sp_executesql icine varchar veri gömme

Mesaj gönderen metemete »

1.

Kod: Tümünü seç

ALTER PROCEDURE [dbo].[sp_urunleri_getir] 
  @firmaid int,
  @orderby varchar(10),
  @dir varchar(5),
  @q varchar(50),
  @cat varchar(30),
  @m varchar(30),
  @yazar varchar(40),
  @marka varchar(40)
  AS
BEGIN
declare @SQL nvarchar(800) set @SQL=N'SELECT stkID,stkAd,kod4Ad,mrkAd,anaBarkod,fiyatS,fiyatS bfiyat,stok FROM View_urunler where '

if (@m='yeni')set @SQL+=N' stkID in(select top 6 stkID from View_urunler where resvar=1 and stok>0 order by gTarih desc)'
else  
     set @SQL+='1=1 '+dbo.fn_kategorisql(@cat)+dbo.fn_markasql(@marka)
 exec sp_executesql @sql,N'@frmid int,@frmgrpid smallint,@q varchar(50),@q1 varchar(50),@q2 varchar(50),@cat varchar(10),@cat2 varchar(10),@barkod varchar(50),@yazar varchar(40),@marka varchar(40)',@frmid=@firmaid,@frmgrpid=@firmagrpID,@q=@q,@q1=@q1,@q2=@q2,@cat=@cat,@cat2=@cat2,@barkod=@barkod,@yazar=yazar,@marka=marka
END
2.

Kod: Tümünü seç

ALTER FUNCTION [dbo].[fn_markasql] (@marka varchar(40))
RETURNS nvarchar(300) AS
BEGIN
if (@marka='%') return N'and 1=1'else 
if (len(@marka)>1) return N' and mrkAd='+@marka
return 'and 1=1'
END
DECLARE @RC int
DECLARE @firmaid int
DECLARE @orderby varchar(10)
DECLARE @dir varchar(5)
DECLARE @q varchar(50)
DECLARE @cat varchar(30)='10.6'
DECLARE @m varchar(30)
DECLARE @yazar varchar(40)
DECLARE @marka varchar(40)='Aktif Yayinevi-istanbul'

EXECUTE @RC = [nildab2c].[dbo].[sp_urunleri_getir]
@firmaid
,@orderby
,@dir
,@q
,@cat
,@m
,@yazar
,@marka
GO
error :
Msg 102, Level 15, State 1, Line 1
Incorrect syntax near 'Yayinevi'.
SELECT [dbo].[fn_markasql] ('Aktif Yaynevi-istanbul')

return

and mrkAd=Aktif Yaynevi-istanbul
problem Incorrect syntax near 'Yayinevi'

problem :if (len(@marka)>1) return N' and mrkAd='+@marka
söle bir komut olosa işi çözecek :if (len(@marka)>1) return N' and mrkAd='+QUOTE(@marka)
sorun duzelecek
çıkamadım ısın ıcınden yardım lutfen
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: exec sp_executesql icine varchar veri gömme

Mesaj gönderen sabanakman »

Sanırım @marka string bilgisi tırnak içinde olması gerekmektedir.

Kod: Tümünü seç

ALTER FUNCTION [dbo].[fn_markasql] (@marka varchar(40))
RETURNS nvarchar(300) AS
BEGIN
if (@marka='%') return N'and 1=1'else 
if (len(@marka)>1) return N' and mrkAd='''+@marka+''''
return 'and 1=1'
END
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Cevapla