Notlar:
Bilgisayardaki hesap makinesi (Başlat->Çalıştır->calc (enter))
Programmer sekmesi ile çeşitli programlamaya özgü değerleri alıyoruz.
61 decimal yazılmış ama hex, bin, oct(octal -oktal- 8 lik) dönüşümleri yapabiliriz
Özetlersek:
61: 10 luk tabanda (base 10)
0011 1101: 2 lik tabanda(base 2)
*** 8 bit ile yazdım ama 6 bite sığıyor
0x3D: 16 lık tabanda (base 16)
75: 8 lik tabanda(base 8)
diye çeşitli şekillerde yazılabilir.
61 = 111101 = 3D = 75
Dec seçili. 61 yazdık.
0. bitten 15. bite kadar bile sürmedi 61'in bin açılımı.
Daha büyük rakamlar yazdığında 15.biti(2. baytı) geçecek 3. bayta gelecek belki 31. biti geçip 4. bayta sıçrayacak ya da 63. bite kadar uzayacak yani 64 bit ile (0 dahil 63. bit = 64 bit) 8 byte bir değere yani Int64 tipine ulaşacaktır.
var
// Integer data types :
Int1 : Byte; // 0 to 255
Int2 : ShortInt; // -127 to 127
Int3 : Word; // 0 to 65,535
Int4 : SmallInt; // -32,768 to 32,767
Int5 : LongWord; // 0 to 4,294,967,295
Int6 : Cardinal; // 0 to 4,294,967,295
Int7 : LongInt; // -2,147,483,648 to 2,147,483,647
Int8 : Integer; // -2,147,483,648 to 2,147,483,647
Int9 : Int64; // -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
http://www.delphibasics.co.uk/Article.asp?Name=DataTypes
http://www.cleavebooks.co.uk/scol/calnumba.htm
http://jakirseu.blogspot.com/2011/09/memory-memory-address-in-programming.html
Aklımda Kalası Kelimeler
* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur
22 Kasım 2011 Salı
Console Application ile formatlama (MSDN den)
// This code example demonstrates the Console.WriteLine() method. // Formatting for this example uses the "en-US" culture. using System; class Sample { enum Color {Yellow = 1, Blue, Green}; static DateTime thisDate = DateTime.Now; public static void Main() { Console.Clear(); // Format a negative integer or floating-point number in various ways. Console.WriteLine("Standard Numeric Format Specifiers"); Console.WriteLine( "(C) Currency: . . . . . . . . {0:C}\n" + "(D) Decimal:. . . . . . . . . {0:D}\n" + "(E) Scientific: . . . . . . . {1:E}\n" + "(F) Fixed point:. . . . . . . {1:F}\n" + "(G) General:. . . . . . . . . {0:G}\n" + " (default):. . . . . . . . {0} (default = 'G')\n" + "(N) Number: . . . . . . . . . {0:N}\n" + "(P) Percent:. . . . . . . . . {1:P}\n" + "(R) Round-trip: . . . . . . . {1:R}\n" + "(X) Hexadecimal:. . . . . . . {0:X}\n", -123, -123.45f); // Format the current date in various ways. Console.WriteLine("Standard DateTime Format Specifiers"); Console.WriteLine( "(d) Short date: . . . . . . . {0:d}\n" + "(D) Long date:. . . . . . . . {0:D}\n" + "(t) Short time: . . . . . . . {0:t}\n" + "(T) Long time:. . . . . . . . {0:T}\n" + "(f) Full date/short time: . . {0:f}\n" + "(F) Full date/long time:. . . {0:F}\n" + "(g) General date/short time:. {0:g}\n" + "(G) General date/long time: . {0:G}\n" + " (default):. . . . . . . . {0} (default = 'G')\n" + "(M) Month:. . . . . . . . . . {0:M}\n" + "(R) RFC1123:. . . . . . . . . {0:R}\n" + "(s) Sortable: . . . . . . . . {0:s}\n" + "(u) Universal sortable: . . . {0:u} (invariant)\n" + "(U) Universal full date/time: {0:U}\n" + "(Y) Year: . . . . . . . . . . {0:Y}\n", thisDate); // Format a Color enumeration value in various ways. Console.WriteLine("Standard Enumeration Format Specifiers"); Console.WriteLine( "(G) General:. . . . . . . . . {0:G}\n" + " (default):. . . . . . . . {0} (default = 'G')\n" + "(F) Flags:. . . . . . . . . . {0:F} (flags or integer)\n" + "(D) Decimal number: . . . . . {0:D}\n" + "(X) Hexadecimal:. . . . . . . {0:X}\n", Color.Green); } } /* This code example produces the following results: Standard Numeric Format Specifiers (C) Currency: . . . . . . . . ($123.00) (D) Decimal:. . . . . . . . . -123 (E) Scientific: . . . . . . . -1.234500E+002 (F) Fixed point:. . . . . . . -123.45 (G) General:. . . . . . . . . -123 (default):. . . . . . . . -123 (default = 'G') (N) Number: . . . . . . . . . -123.00 (P) Percent:. . . . . . . . . -12,345.00 % (R) Round-trip: . . . . . . . -123.45 (X) Hexadecimal:. . . . . . . FFFFFF85 Standard DateTime Format Specifiers (d) Short date: . . . . . . . 6/26/2004 (D) Long date:. . . . . . . . Saturday, June 26, 2004 (t) Short time: . . . . . . . 8:11 PM (T) Long time:. . . . . . . . 8:11:04 PM (f) Full date/short time: . . Saturday, June 26, 2004 8:11 PM (F) Full date/long time:. . . Saturday, June 26, 2004 8:11:04 PM (g) General date/short time:. 6/26/2004 8:11 PM (G) General date/long time: . 6/26/2004 8:11:04 PM (default):. . . . . . . . 6/26/2004 8:11:04 PM (default = 'G') (M) Month:. . . . . . . . . . June 26 (R) RFC1123:. . . . . . . . . Sat, 26 Jun 2004 20:11:04 GMT (s) Sortable: . . . . . . . . 2004-06-26T20:11:04 (u) Universal sortable: . . . 2004-06-26 20:11:04Z (invariant) (U) Universal full date/time: Sunday, June 27, 2004 3:11:04 AM (Y) Year: . . . . . . . . . . June, 2004 Standard Enumeration Format Specifiers (G) General:. . . . . . . . . Green (default):. . . . . . . . Green (default = 'G') (F) Flags:. . . . . . . . . . Green (flags or integer) (D) Decimal number: . . . . . 3 (X) Hexadecimal:. . . . . . . 00000003 */
18 Kasım 2011 Cuma
Dinamik SQL cümleleri çalıştırmak
PROCEDURE kısaltması PROC
TRANSACTION kısaltması TRANS
EXECUTE kısaltması EXEC
Demek ki
EXECUTE = EXEC
eğer parametresiz bir SQL cümlesi ise EXEC '....' ya da EXEC @sqlCumlesi
Eğer sql cümleniz: >
'SELECT TOP(@iTopIN) @soyadiOut=soyadi FROM @tabloAdiIN WHERE adi=@kullaniciAdiIN'ise
@iTopIN
, @tabloAdiIN
ve @kullaniciAdiIN
diye 3 parametre girdi parametresi
@soyadiOUT
ise çıktı (OUT|OUTPUT) parametresi.
Böyle bir dinamik SQL ifadesini aşağıdaki örnekteki gibi hazırlayabilirsiniz.
Eğer SQL ifadenizde parametre ifadeleriniz varsa
EXEC(@sqlIfadeniz)
şeklinde parentezli olarak çalıştırmalısınız.
DECLARE @tabloAdi sysname; DECLARE @SQL nvarchar(500); DECLARE @ParmDef nvarchar(500); DECLARE @count int; SET @tabloAdi = '[dbo].[Birimler]'; SET @SQL = N'SELECT @cnt=COUNT(1) FROM '+@tabloAdi+';' SET @ParmDef = N' @tbl sysname, @cnt int OUTPUT'; EXECUTE sp_executesql @SQL, @ParmDef, @tbl = @tabloAdi, @cnt=@count OUTPUT; SELECT @count;Aşağıdaki kaynak kodu LOG kayıtlarımızı taşımak için yazdığımız bir SQL JOB.
DECLARE @kaynak VARCHAR(50) DECLARE @hedef VARCHAR(50) DECLARE @aktarilan INT DECLARE @silinen INT DECLARE @tblOzet TABLE ( id int IDENTITY(1,1), kaynak VARCHAR(50), hedef VARCHAR(50), aktarilan int, silinen int ); DECLARE cr CURSOR FOR SELECT kaynakTabloAdi, hedefTabloAdi FROM medula_V3_test_test_log.dbo.TasinacakTablolar OPEN cr FETCH NEXT FROM cr INTO @kaynak, @hedef WHILE @@FETCH_STATUS = 0 BEGIN print @kaynak+' - '+@hedef -- 1. Kaynakta şu an kaç aktarılacak satır var (COUNT) -- 2. Hedefe TOP(COUNT) kayıdı, kaynaktan SELECT ile INSERT et -- 3. Kaynaktaki TOP(COUNT) kayıdı sil -- 4. Özet durum mesajı hazırla /*
KAYNAK | HEDEF | AKTARILAN | SİLİNEN |
---|---|---|---|
@kaynak | @hedef | @aktarilan | @silinen |
Sonuç:
Taşınacak tabloların tutulduğu tablo:
Son Hali
DECLARE @kaynakVeritabani VARCHAR(50) SET @kaynakVeritabani = 'medula_V3_test'; DECLARE @hedefVeritabani VARCHAR(50) SET @hedefVeritabani = 'medula_V3_test_test_log'; -- @mailBody : Gönderilecek iletinin gövdesini oluşturacak DECLARE @mailBody NVARCHAR(MAX) -- @tr : Gönderilecek iletinin tablosundaki satırı oluşturmak için DECLARE @tr NVARCHAR(1000) DECLARE @kaynak VARCHAR(50) DECLARE @hedef VARCHAR(50) DECLARE @aktarilan INT DECLARE @silinen INT DECLARE @tblOzet TABLE (id int IDENTITY(1,1), kaynak VARCHAR(50), hedef VARCHAR(50), aktarilan int, silinen int); DECLARE cr CURSOR FOR SELECT kaynakTabloAdi, hedefTabloAdi FROM medula_V3_test_test_log.dbo.TasinacakTablolar OPEN cr FETCH NEXT FROM cr INTO @kaynak, @hedef WHILE @@FETCH_STATUS = 0 BEGIN -- 1. Hedefteki kayıtları, kaynaktan SELECT ile hedefe INSERT et -- 2. Kaynaktaki TOP(@@ROWCOUNT) kayıdı sil ve işlem sonuçlarını özet tabloya INSERT et -- 3. Kaynaktaki Veritabanı sıkıştırılaracak -- 4. Özet durum mesajı hazırla /*
KAYNAK | HEDEF | AKTARILAN | SİLİNEN |
---|---|---|---|
@kaynak | @hedef | @aktarilan | @silinen |
KAYNAK | HEDEF | AKTARILAN | SİLİNEN |
---|---|---|---|
'+@kaynak+' | '+@hedef+' | '+CAST(@aktarilan AS NVARCHAR(10))+' | '+ CAST(@silinen AS NVARCHAR(10))+' |
Çalışma Tarihi: | ' + GETDATE() + ' |
---|---|
Kaynak Veritabanı: | ' + @kaynakVeritabani + ' |
Aktarılan Veritabanı: | ' + @hedefVeritabani + ' |
' + @mailBody + ' |
İleti Gönderen Uygulamaya göre düzenlenmiş
Çalışma Tarihi: | Nov 19 2011 12: | ||||||||
---|---|---|---|---|---|---|---|---|---|
Kaynak Veritabanı: | medula_V3 | ||||||||
Aktarılan Veritabanı: | medula_V3_Log | ||||||||
|
SON HALİ(çift tırnaklı falan)
DECLARE @kaynakVeritabani VARCHAR(50) SET @kaynakVeritabani = 'medula_V3'; DECLARE @hedefVeritabani VARCHAR(50) SET @hedefVeritabani = 'medula_V3_Log'; -- @html : Gönderilecek iletinin tüm HTML yapısı DECLARE @html VARCHAR(4000) -- @css : Gönderilecek iletinin style tanımları DECLARE @css VARCHAR(200) SET @css ='<link rel=''stylesheet'' href=''http://medula.fresenius.com.tr/OrtakDosyalar/FMedulaLogAktarimIleti.css'' style type=''text/css'' />'; -- @head : Gönderilecek iletinin HEAD kısmı DECLARE @head VARCHAR(300) SET @head = '<HEAD>' + @css + '</HEAD>' -- @body : Gönderilecek iletinin BODY kısmı DECLARE @body VARCHAR(3500) -- @aktarimOzet : Aktarımın hangi DB den hangi DB ye ne zaman yapıldı özet başlığı DECLARE @aktarimOzet VARCHAR(3500) -- @aktarimSonuc : Aktarım bilgisinin(aktarımı yapılmış tablo adlarının ve aktarılan kayıt sayılarının) <TABLE> içinde gösterimi DECLARE @aktarimSonuc VARCHAR(3500) -- @tr : Gönderilecek iletinin tablosundaki satırı oluşturmak için DECLARE @tr VARCHAR(1000) DECLARE @iletiKime VARCHAR(200) SET @iletiKime = 'cem.topkaya@fmc-ag.com' -- KAYITLAR içinde dönmek için kullanılacak ve aktarılmışların özet bilgilerini tutumak için değişkenler DECLARE @kaynak VARCHAR(50) DECLARE @hedef VARCHAR(50) DECLARE @aktarilan INT DECLARE @silinen INT DECLARE @tblOzet TABLE (id int IDENTITY(1,1), kaynak VARCHAR(50), hedef VARCHAR(50), aktarilan int, silinen int); DECLARE cr CURSOR FOR SELECT kaynakTabloAdi, hedefTabloAdi FROM medula_V3_Log.dbo.TasinacakTablolar OPEN cr FETCH NEXT FROM cr INTO @kaynak, @hedef WHILE @@FETCH_STATUS = 0 BEGIN -- 1. Hedefteki kayıtları, kaynaktan SELECT ile hedefe INSERT et -- 2. Kaynaktaki TOP(@@ROWCOUNT) kayıdı sil ve işlem sonuçlarını özet tabloya INSERT et -- 3. Kaynaktaki Veritabanı sıkıştırılaracak -- 4. Özet durum mesajı hazırla /* <TABLE> <THEAD><TR> <TH>KAYNAK</TH><TH>HEDEF</TH><TH>AKTARILAN</TH><TH>SİLİNEN</TH> </TR></THEAD> <TBODY> <TR><TD>@kaynak</TD><TD>@hedef</TD><TD>@aktarilan</TD><TD>@silinen</TD></TR> </TBODY> </TABLE> */ -- 5. Özet durumu ileti olarak gönder -- 1. DECLARE @sql VARCHAR(500) SET @sql ='INSERT INTO '+ @hedefVeritabani +'.'+ @hedef + ' SELECT * FROM ' + @kaynakVeritabani +'.'+ @kaynak EXEC(@sql) SET @aktarilan = @@ROWCOUNT; -- 2. SET @sql = 'DELETE TOP(' + CAST(@aktarilan AS NVARCHAR(8)) + ') FROM ' + @kaynakVeritabani +'.'+ @kaynak EXEC(@sql) SET @silinen = @@ROWCOUNT; INSERT INTO @tblOzet VALUES(@kaynak, @hedef, @aktarilan, @silinen); FETCH NEXT FROM cr INTO @kaynak,@hedef END CLOSE cr DEALLOCATE cr -- 3. iş DB Sıkıştırma DBCC SHRINKDATABASE ( @kaynakVeritabani ) -- 4. SET @aktarimSonuc = '<TABLE border=''1''><THEAD><TR><TH class=''metin''>KAYNAK</TH><TH class=''metin''>HEDEF</TH><TH>AKTARILAN</TH><TH>SİLİNEN</TH></TR></THEAD>'; DECLARE crHtml CURSOR FOR SELECT kaynak,hedef,aktarilan,silinen FROM @tblOzet OPEN crHtml FETCH NEXT FROM crHtml INTO @kaynak, @hedef, @aktarilan, @silinen WHILE @@FETCH_STATUS = 0 BEGIN IF @aktarilan > 0 BEGIN SET @tr = '<TR><TD>'+@kaynak+'</TD><TD>'+ @hedef +'</TD><TD class=''rakam''>'+CAST(@aktarilan AS VARCHAR(10))+'</TD><TD class=''rakam''>'+ CAST(@silinen AS VARCHAR(10))+'</TD></TR>' SET @aktarimSonuc = @aktarimSonuc + @tr END FETCH NEXT FROM crHtml INTO @kaynak, @hedef, @aktarilan, @silinen END CLOSE crHtml DEALLOCATE crHtml SET @aktarimSonuc = @aktarimSonuc + '</TBODY></TABLE>'; -- 5. Adım İleti gönderme SET @aktarimOzet = '<TABLE><CAPTION>LOG TAŞIMA ÖZETİ</CAPTION><TR><TH class=''metin''>Çalışma Zamanı : </TH><TD>' + CAST(GETDATE() AS VARCHAR(25)) + '</TD></TR><TR><TH class=''metin''>Kaynak VT: </TH><TD>' + @kaynakVeritabani + '</TD></TR><TR><TH class=''metin''>Hedef VT: </TH><TD>' + @hedefVeritabani + '</TD></TR><TR><TD COLSPAN=''2''>' + @aktarimSonuc + '</TD></TR></TABLE>'; SET @body = '<BODY>' + @aktarimOzet + '</BODY>'; SET @html = '<HTML>' + @head + @body + '</HTML>'; --print @html DECLARE @args VARCHAR(4000) SET @args = 'Q:\SendMail\caSendEmailAlert.exe /sbj:["Log Taşıma"] /html /to:'+ @iletiKime +' /body:["' + @html + '"]' --print @args EXEC xp_cmdshell @args
Kaydol:
Kayıtlar (Atom)