bildirgec.org

stored procedure hakkında tüm yazılar

TRIGGER, STORED PROCEDURE ve REFERENTIAL INTEGRITY

zynex | 02 November 2009 16:16

Bu yazıda verilecek örnek kodlar Sybase Adaptive Server Anywhere ve Interbase6 üzerinde çalıştığı test edilmiş kodlardır. Kodlar içinde kullanılan SQL cümleleri standart SQL cümleleri olması sebebi ile diğer veritabanlarında da kolayca çalışacaktır. Sadece trigger ve stored procedure tanımlamalarındaki kod yapısı farklılıklar göstermektedir. Çalışacağınız veritabanında nasıl trigger ve stored procedure tanımlanabileceğini öğrenerek bu denemeleri yapmak mümkün olabilir. İtiraf edeyim ki yazı biraz uzun olduğu için tekrar baştan aşağı okumadım. Yaptığım hataları uyarmanız sonucu düzeltmekten memnuniyet duyarım.

MySQL 5.4 – gerçekten harika

ibrahimaga | 26 April 2009 10:09

Bugün itibariyle MySQL 5.4 indirilebiliniyor. Eğer gerçekten MySQL kendi sitesinde anlattığı gibiyse gerçekten çok süper performans değişikliği olacak. Sorgu hızları, bağlantı hızı, subquery ve joinlerde çok önemli iyileştirmeler yapılmış bir sorgu örneği vermişler MySQL 5.1 de bu sorgu 12 dakika sürüyormuş MySQL 5.4 de ise sadece 1.8 saniye sürüyor. Stored Procedure yapısında da iyileştirme yapmışlar. Prepared Statemens için out parameter desteği vs.

Asp ile SQLden output alma ve Command kullanımı …

admin | 18 March 2009 12:35

Henüz SP ( stored procedure ) ile yeni ilgililer yada orta düzey projeler için kullanan birçok kişinin zaman içerisinde sıkıntı çektiği yada çektiğini düşündüğüm birşeydir output okuma. Toplam kayit dönüşlerinde yada insert sonrası bilgi dönüşlerinde update sonrasi bilgi dönüşlerinde ve daha birçok noktada, çoğu kez kullanılması icab eden fakat SP ile yeni ilgilenenlerin kafasini karıştıran bir durumdur SP output …

Öncelikle kullanacağımız SP ‘nin kodlarını paylaşarak başlamak isterim …

SP ( Stored Procedure ) kodları :

1
2
3
4
5
6
7
8
9
CREATE PROCEDURE SP_OUTPUT_SAMPLE
@GET_ID int,
@OUT_TP int = Null OUTPUT,
@OUT_TX int = Null OUTPUT
AS
BEGIN
SELECT @OUT_TP = Count(REG_ID) FROM MESSAGES WHERE USER_ID = @GET_ID
SELECT @OUT_TX = Count(REG_ID) FROM INVITES WHERE USER_ID = @GET_ID
END

SQL de yüksek performans ile …

admin | 16 March 2009 15:24

Denemeler sonucu elde ettiğim ve kullanımı da oldukça kolay olan bir stored procedure stored procedure. Öncelikle belirtmek isterim ki MsSQL platformuna ait bu stored procedure veri sayfalamanızda, veri listelemenizde, son kayıtları getirmenizde kullanabileceğiniz bir sp olup performans seviyesi sizin de denemeleriniz sonunda görebileceğiniz gibi oldukça yüksektir.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
CREATE PROCEDURE SP_RESULT
(
@Tables varchar(1000),
@PK varchar(100),
@Sort varchar(200) = NULL,
@PageNumber int = 1,
@PageSize int = 10,
@Fields varchar(1000) = '*',
@Filter varchar(1000) = NULL,
@Group varchar(1000) = NULL)
AS
IF @Sort IS NULL OR @Sort = ''
SET @Sort = @PK
DECLARE @SortTable varchar(100)
DECLARE @SortName varchar(100)
DECLARE @strSortColumn varchar(200)
DECLARE @operator char(2)
DECLARE @type varchar(100)
DECLARE @prec int
IF CHARINDEX('DESC',@Sort)>0
BEGIN
SET @strSortColumn = REPLACE(@Sort, 'DESC', '')
SET @operator = '<='
END
ELSE
BEGIN
IF CHARINDEX('ASC', @Sort) = 0
SET @strSortColumn = REPLACE(@Sort, 'ASC', '')
SET @operator = '>='
END
IF CHARINDEX('.', @strSortColumn) > 0
BEGIN
SET @SortTable = SUBSTRING(@strSortColumn, 0, CHARINDEX('.',@strSortColumn))
SET @SortName = SUBSTRING(@strSortColumn, CHARINDEX('.',@strSortColumn) + 1, LEN(@strSortColumn))
END
ELSE
BEGIN
SET @SortTable = @Tables
SET @SortName = @strSortColumn
END
SELECT @type=t.name, @prec=c.prec
FROM sysobjects o
JOIN syscolumns c on o.id=c.id
JOIN systypes t on c.xusertype=t.xusertype
WHERE o.name = @SortTable AND c.name = @SortName
IF CHARINDEX('char', @type) > 0
SET @type = @type + '(' + CAST(@prec AS varchar) + ')'
DECLARE @strPageSize varchar(50)
DECLARE @strStartRow varchar(50)
DECLARE @strFilter varchar(1000)
DECLARE @strSimpleFilter varchar(1000)
DECLARE @strGroup varchar(1000)
IF @PageNumber < 1
SET @PageNumber = 1
SET @strPageSize = CAST(@PageSize AS varchar(50))
SET @strStartRow = CAST(((@PageNumber - 1)*@PageSize + 1) AS varchar(50))
IF @Filter IS NOT NULL AND @Filter != ''
BEGIN
SET @strFilter = ' WHERE ' + @Filter + ' '
SET @strSimpleFilter = ' AND ' + @Filter + ' '
END
ELSE
BEGIN
SET @strSimpleFilter = ''
SET @strFilter = ''
END
IF @Group IS NOT NULL AND @Group != ''
SET @strGroup = ' GROUP BY ' + @Group + ' '
ELSE
SET @strGroup = ''
EXEC(
'
DECLARE @SortColumn ' + @type + '
SET ROWCOUNT ' + @strStartRow + '
SELECT @SortColumn=' + @strSortColumn + ' FROM ' + @Tables + @strFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
SET ROWCOUNT ' + @strPageSize + '
SELECT ' + @Fields + ' FROM ' + @Tables + ' WHERE ' + @strSortColumn + @operator + ' @SortColumn ' + @strSimpleFilter + ' ' + @strGroup + ' ORDER BY ' + @Sort + '
'
)