Daha önce Oracle da yapmış olduğumuz ancak SQL tarafında bir türlü fırsat bulup hazırlayamadığımız satırları birleştirmeye yarıyan Procedure ı burada bulabilirsiniz. Bu Procedure ın diğer satır birleştirmeye yarayan Procedure lerdan farkı parametre olrak SQL Sorgusu veriyor olmanız.Özellikle SeriNo birleştirme, İrsaliye Numaralarını birleştirme gibi işlemlerde kullanabilirsiniz.Umarım işinize yarar…..
| CREATE PROCEDURE NSP_ROWCONCAT(@SQL1 VARCHAR(MAX)) AS
BEGIN DECLARE @SQL2 VARCHAR(MAX) SET @SQL2 = ‘DECLARE @SQL VARCHAR(MAX) DECLARE @RES VARCHAR(MAX) DECLARE CUR CURSOR FOR ‘ +@SQL1 +’ OPEN CUR FETCH NEXT FROM CUR INTO @SQL WHILE @@FETCH_STATUS = 0 BEGIN PRINT @SQL IF @RES IS NULL SET @RES = @SQL ELSE SET @RES = @RES +”;” + @SQL
FETCH NEXT FROM CUR INTO @SQL END CLOSE CUR DEALLOCATE CUR SELECT @RES’ EXEC (@SQL2) END – örnek kullanim DECLARE @SQL1 VARCHAR(MAX) SET @SQL1 = ‘SELECT GRUP_KODU FROM TBLSTSABIT WHERE STOK_ADI LIKE ”%PIG%”’ EXEC NSP_ROWCONCAT @SQL1
|




#1 by rhan on Ocak 20, 2010 rhanCevap Yaz - 10:07 am rhanCevap Yaz
Quote
CREATE FUNCTION DBO.SERINUMARALARI(@FISNO NVARCHAR(15), @STOK_KODU NVARCHAR(35))
RETURNS NVARCHAR(200)
AS
BEGIN
DECLARE @Sonuc NVARCHAR(500)
DECLARE @TMP NVARCHAR(500)
SELECT @sonuc = COALESCE(@SONUC+’; ‘ , ” ) + SERI_NO FROM
tblserITRA WHERE BELGETIP=’J’ AND BELGENO=@FISNO AND STOK_KODU=@STOK_KODU
SET @TMP=(SELECT @SONUC)
RETURN @TMP
END
SELECT dbo.SERINUMARALARI (’000000000242077′,’09-20-001′ )
— DIZAYNDA KULLANIRKEN ———————————————–
DBO.SERINUMARALARI (VT_Karekter({1001}),VT_Karekter({4000}))
Şeklinde de kullanabilirsiniz.
#2 by Rıdvan ÇULFAOĞLU on Ocak 20, 2010 Rıdvan ÇULFAOĞLUCevap Yaz - 6:49 pm Rıdvan ÇULFAOĞLUCevap Yaz
Quote
Paylaşım için teşekkürler.