1 Son düzenleyen, mrduyar (04.01.2008 13:41:47)

Konu: Sorgu da ' veya "

selamlar;

SP de kullanmaya yeni başladım anlamam 2 gün sürdü. anlaşılır ve çalışır bir örneği sonunda hayata geçirebildim.
Aşağıdaki kod ile Sp_deger SQL e eklene biliyor.

SQL
SET ANSI_NULLS ON

GO
SET QUOTED_IDENTIFIER ON
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_Deger]') AND type IN (N'P', N'PC'))
BEGIN
EXEC dbo.sp_executesql @statement = N'
 
CREATE   procedure [dbo].[sp_Deger]
    @Alanlar varchar(300),
    @TabloAdi varchar(300),
    @kriter varchar(300)
as
declare @Sorgu varchar(1000)
Set DateFormat dmy
Select @Sorgu = '
'
   select '
'+@Alanlar+'' from ''+@TabloAdi+'' where ''+@kriter+''
'
'
exec(@sorgu)
'

END
-- kullanım
--exec sp_deger 'cinsi,birim','t_stok','birim=''ADET'''
--exec sp_deger '*','t_stok','kdvy=1'
--exec sp_deger 'cinsi,sum(kdvy)','t_stok','kdvy=1 group by cinsi'

oluşan sp yi aşağıdaki gibi kullanıyorum.

Visual Fox Pro
local

lccinsi="S.KAYIN VD-A-20 36*198*72.5 M-3 12'LİK SAĞ"
    x=SQLExec(baglan(),"exec sp_deger 'top 1 *','t_stok','cinsi = ''"+"&lccinsi"+"'''",'crt_stokVarmi')


sorun yok işimide görüyordu taki stok ismi içinde 12" lik 3' gibi karekterler içirince sistem dağıldı. Toparlayacak arkadaşlara ihtiyacım var.
Henüz ()[]% gibi işaretlerdede denemedim.
Saygılar

Bilmediğin Neyse Yanıldığındır.

2

Re: Sorgu da ' veya "

Ramazan,
Yol yakinken don:)

Visual Fox Pro
TEXT TO m.lcSorgu1 noShow

select cinsi,birim
from t_stok
where birim=?m.lcBirim
ENDTEXT
TEXT TO m.lcSorgu2 noShow
select *
  from t_stok
  where kdvy=1
ENDTEXT
TEXT TO m.lcSorgu3 noShow
select cinsi,sum(kdvy)
FROM t_stok
WHERE kdvy=1
group by cinsi
ENDTEXT
 
 
lcBirim = 'ADET'
SQLEXEC(m.lnHandle, m.lcSorgu1, 'crsSonuc1')
SQLEXEC(m.lnHandle, m.lcSorgu2, 'crsSonuc2')
SQLEXEC(m.lnHandle, m.lcSorgu3, 'crsSonuc3')

Ya da:

Visual Fox Pro
TEXT TO m.lcSorgu noShow

select cinsi,birim
from t_stok
where birim=?m.lcBirim ;
 
select *
  from t_stok
  where kdvy=1 ;
 
select cinsi,sum(kdvy)
FROM t_stok
WHERE kdvy=1
group by cinsi ;
ENDTEXT
 
lcBirim = 'ADET'
SQLEXEC(m.lnHandle, m.lcSorgu, 'crsSonuc')

SP'leri o kadar kullanilmasi gerekli seyler olarak gorme. SP ile yapacaksan yine de degerleri yukaridaki gibi parametrik gonder, yoksa yasadigin problemleri ve yenilerini yasarsin. SP yaninda functionlara bak (ozellikle "table valued functions"). Onlarin ozelligi SP, View karisimi olmalari ve parametre kabul etmeleri.

3

Re: Sorgu da ' veya "

eğer işini bir select ile görüyorsan sp'nin hiçbir anlamı yok. ancak bir döngü kullanacaksan ve o döngüden az bir değeri foxpro'ya göndereceksen sp anlamlı bence. ben şimdiye kadar hiç sp kullanmadım. sadece select kullanarak bir belediye otomasyonunu bitirdim.
çetin'in de dediği gibi sp olayı biraz abartılıyor. batch process dedikleri türden işlerin varsa sp tamam daha hızlı olur. çünkü kayıtları server'da işlemiş olursun. yoksa bence anlamsız.

Haksızlıklar karşısında susanlar, dilsiz şeytanlardır!
www.metinemre.com

4

Re: Sorgu da ' veya "

DÖNDÜM.

Bilmediğin Neyse Yanıldığındır.