Forum

Procedure içinde Us...
 
Bildirimler
Hepsini Temizle

Procedure içinde Use Kullanımı

7 Yazılar
3 Üyeler
0 Reactions
1,581 Görüntüleme
(@altincem)
Gönderiler: 13
Eminent Member
Konu başlatıcı
 

Merhalar, database bazında loginleri user role ve server role almak için bir script hazırladım. 

Sorunum şu procedure haline getirmek ve bir db parametresi atamak istiyorum. 

Sorgunun kullanımda olan database göre çalışmasını sağladım ama procedure içine bir türlü paramatre olarak yazamadım.

Procedure içinde Use kullanımını nasıl sağlarım yardımlarınızı bekliyorum.

 

 

 
Gönderildi : 05/05/2019 07:16

(@cankaya)
Gönderiler: 119
Üye
 

dynamic sql kullanmalısınız.  sp_execute ya da exec('') içerisinde dinamik sql komutunuzu çalıştırabilirsiniz. 

 
Gönderildi : 05/05/2019 22:29

(@altincem)
Gönderiler: 13
Eminent Member
Konu başlatıcı
 

merhaba, 

 

cevap için teşekkürler. Fakat attığım parametreyi almıyor. 

şöyleki 

 

@dbname nvarchar(max)

Exec('Use '+ @dbName + ';')

 

 
Gönderildi : 06/05/2019 08:29

(@vedatozerr)
Gönderiler: 65
Trusted Member
 

Merhaba,

Aşağıdaki sorguyu deneyebilir misiniz.

 

DECLARE @DATABASE varchar(60),@SQL NVARCHAR(MAX)
SET @DATABASE = 'GODATA'
SET @SQL = 'USE '+QUOTENAME(@DATABASE)+' SELECT * FROM LG_006_CLCARD ;'
EXECUTE(@SQL)

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
[email protected]

 
Gönderildi : 07/05/2019 13:04

(@altincem)
Gönderiler: 13
Eminent Member
Konu başlatıcı
 
SELECT * FROM LG_006_CLCARD 

şu kısmı anlamadım hocam. yine seçmiyor.

'GODATA' kısmına parametre olarak atadığım @dbname ile eşleştiriyorum ama sorgudaki SELECT * FROM LG_006_CLCARD  bu kısmı anlamadım
 
Gönderildi : 07/05/2019 13:18

(@vedatozerr)
Gönderiler: 65
Trusted Member
 

Merhaba,

Use normalde direk çalıştırdığımız zaman ilgili dataya gitmektedir.

Örneğin;

Use Deneme şeklinde sorgu çalışır.

 

Fakat Exec içinde olduğu zaman ilgili dataya üstteki örnek gibi işlem yapmıyor maalesef, sadece

değişken için ilgili datada olduğumuz belirtikten sonra o datayla ilgili sorguyu yazabiliriz. Bende

Logo veri tabanı olduğundan için yukarıdaki örnek sorguyu yazdım.

 

 

DECLARE @DATABASE varchar(60),@SQL NVARCHAR(MAX)
SET @DATABASE = 'GODATA' /* godata yazan yere işlem yapmak istediğiniz datayı yazın*/
SET @SQL = 'USE '+QUOTENAME(@DATABASE)+' SELECT * FROM LG_006_CLCARD /*fromdan sonra o datada olan tablo adını yazın.*/ ;'
EXECUTE(@SQL)

 

حَسْبُنَا اللهُ وَنِعْمَ الْوَكِيلُ
Allah bize yeter, O ne güzel vekildir.
Antalya
[email protected]

 
Gönderildi : 07/05/2019 14:01

(@altincem)
Gönderiler: 13
Eminent Member
Konu başlatıcı
 

hocam yardımlarınız için teşekkürler. Kontrol edicem tekrar ama anladım şimdi

 
Gönderildi : 07/05/2019 17:09

Paylaş: