Yazar |
|
enginkdal
Kayıt: 09.01.2008 |
|
ALTER PROCEDURE dbo.humam
(
@topX INT,
@katagori varchar(50)
)
AS
DECLARE @SQL VarChar(1000)
SELECT @SQL = 'SELECT TOP '
SELECT @SQL = @SQL + CAST(@topX as nvarchar(10)) +' * from uye WHERE rol=@katagori'
EXEC ( @SQL)
kırmızı ile işaretlediğim yeri nasıl alırım. rol=admin olanları alamıyorum mesela yani değişken nasıl alırım burdan.
B?ZLER PAZARLiK DEGiL MEZARLIK DOSTLARIYIZ.
|
|
Yazar |
|
offman
Kayseri
Kayıt: 20.01.2006 |
|
Create PROCEDURE dbo.humam
(
@topX INT,
@katagori varchar(50)
)
AS
EXEC('SELECT TOP ' + Cast(@topX as nvarchar(10)) + ' * from uye where rol='+@kategori)
-------------------------------------------------------------------------------------------------------
Create PROCEDURE dynamicSql dbo.humam
(
@topX nvarchar(5),
@whereStatement nvarchar(1000)
)
AS
EXEC('SELECT TOP ' + @topX + ' * from uye where '+@whereStatement)
ikinci yazdığımda ise topX i string olarak gonderebilirsin farkeden bir sey olamas dinamik olarak oluşturulan sorgu içinde sorun çıkmayacaktır. Ve kod tarafında @whereStatement ina istediğini atabilirsin örneğin rol=3 rol =5 deyip gonder gitsin.
331. KSD
*.NET DEVELOPER
|
|
Yazar |
|
enginkdal
Kayıt: 09.01.2008 |
|
offman yazdi | Create PROCEDURE dbo.humam
(
@topX INT,
@katagori varchar(50)
)
AS
EXEC('SELECT TOP ' + Cast(@topX as nvarchar(10)) + ' * from uye where rol='+@kategori)
-------------------------------------------------------------------------------------------------------
Create PROCEDURE dynamicSql dbo.humam
(
@topX nvarchar(5),
@whereStatement nvarchar(1000)
)
AS
EXEC('SELECT TOP ' + @topX + ' * from uye where '+@whereStatement)
ikinci yazdığımda ise topX i string olarak gonderebilirsin farkeden bir sey olamas dinamik olarak oluşturulan sorgu içinde sorun çıkmayacaktır. Ve kod tarafında @whereStatement ina istediğini atabilirsin örneğin rol=3 rol =5 deyip gonder gitsin.
|
senin dediğini de denedim ama yine görmedi daha once denemiştim 1. olanını ama olmamıştı.
B?ZLER PAZARLiK DEGiL MEZARLIK DOSTLARIYIZ.
|
|
Yazar |
|
enginkdal
Kayıt: 09.01.2008 |
|
olmadı hacım
B?ZLER PAZARLiK DEGiL MEZARLIK DOSTLARIYIZ.
|
|
Yazar |
|
piedro
Kayıt: 08.06.2008 |
|
type hatası var gibi,,,
rol = 5 mi
yoksa
rol = '5' mi
tırnakları unutuyorsun gibi bir durum var
|
|
Yazar |
|
sevecen
adana istanbul
Kayıt: 08.02.2006 |
|
--exec humam 12, 'DİYARBAKIR'
ALTER PROCEDURE dbo.humam
(
@topX INT = 10,
@katagori varchar(50) = 'ADANA'
)
AS
DECLARE @SQL VarChar(MAX) /*Şartların çoğaldığı where koşulunun uzadığı durumlarda max kulanman daha iyi.*/
/*Aşağıdaki satırda düzenleme yapıyorum, fazlalıklar var.*/
--SELECT @SQL = 'SELECT TOP ' + rtrim(ltrim(CAST(@topX as nvarchar(10)))) +' * from Adres
SELECT @SQL = 'SELECT TOP ' + CAST(@topX as varchar) +' * from Adres
WHERE SEHIR=''' + @katagori + '''' /*ltrim, rtrim arada fazla boşluklar oluşmasın diye */
--select @SQL as StOlusanSorgu /*Bu satırı oluşan cümleyi gör diye yazdım.*/
EXEC (@SQL)
Not: Elimde küçük Adres tablosu vardı. Sen kendine göre uyarlarsın artık. Default değerleri de ben denerken kendim verdim. Problem tırnaklardaymış. Dinamik sqli tırnaklar yüzünden sevmiyorum pek. :)
bize ruyalarimizin degil uyanikligimizin tabiri gerek (Alinti)
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | |