SQL geçici tablosunun veri türlerini bulma | tutuappapks.com
Bir işlevde kullanabilmem için #temp tablosunu @table değişkenine çevirmem gerekiyor.
Sorgum, #temp'e (birden çok tablodan) ekleme gibi kullanır:
#Temp tablosundaki sütunların veri türlerini bulmanın kolay bir yolu var, böylece #temp olarak aynı sütun ve veri türleriyle @table değişkeni oluşturabilir miyim?
@AaronBertrand haklı ama @gotqn gelen cevap hiçbiri için mükemmel temp tablolar. - Rafa Barragan
İkinci öneriyi beğendim ancak metin türlerini sağlamadı bu yüzden burada veri türleri ile birleştirildi. ´SELECT cols.column_id, cols.name, ty.name, cols.max_length, cols.precision, cols.scale FROM tempdb.sys.columns cols.system_type_id = ty.system_type_id üzerinde sys.types ty'e katın WHERE [object_id] = OBJECT_ID (N'tempdb .. # myTable ');' - RobbZ
bir karma tablosuyla ilgili ayrıntıları almak için tempdb veritabanından çalıştırmak için sp_help işlemine hak kazanmanız gerekir, çünkü hash tablosunun depolandığı yerdir. Sp_help'i farklı bir veritabanından çalıştırmaya çalışırsanız, tablonun bu veritabanında bulunmadığı konusunda bir hata alırsınız.
Sorgunuz tempdb dışında çalıştırılıyorsa, varsayalım, aşağıdakileri çalıştırabilirsiniz:
Bu yordamın bir yararı, sizin için sütun veri türlerinin bir metin açıklamasını içerir. Bu, kopyalayıp başka bir sorguya yapıştırmayı çok kolaylaştırır, örn. Bir tablo değişkeni oluşturmak için geçici tablo tanımını kullanmaya çalışıyorsanız.
Aynı bilgiyi Syscolumns tablosunda bulabilirsin, fakat kendini haritalamak zorunda olduğun tipler için sayısal belirteçler verecek. Sp_help'i kullanmak size bir adım kazandıracak.
Bunun için teşekkürler, kabul edilen cevaptan daha iyi bir yol çünkü aslında ne yapıldığını ve neden olduğunu açıklıyor. - underscore_d
Kabul edilen cevap veri türü vermez. Sys.types ile tempdb.sys.columns cevabın yorumunda belirtilen veri türünü verir. Ancak, system_type_id üzerinde katılarak veri türü "sysname" ile bir satır daha verir. Bunun yerine "user_type_id", aşağıda verilen kesin çözümü verir.
Ne yapmaya çalıştığınız, sorguladığınız sütunların sistem türleri hakkında bilgi almaktır.
İçin SQL Server 2012 and later kullanabilirsiniz sys.dm_exec_describe_first_result_set işlevi. Sütunlar ve hakkında çok ayrıntılı bilgi verir system_type_column tüm sistem tipi tanımını (tablo tanımınızda kullanıma hazır) tutar:
Ben hata "meta verisi belirlenemedi çünkü deyim" SELECT * FROM tempdb.dbo. # T 'bir temp tablosu kullanır. " geçici tablolar için ... - blobbles
Sınırlamalar hakkında aşağıdaki makaleyi kontrol edin - msdn.microsoft.com/en-us/library/ff878258.aspx - bakın Remarks Bölüm. - gotqn
Evet, geçici tablonun veri türleri, seçtiğiniz ve eklediğiniz sütunların veri türleri olacaktır. Bu yüzden, select ifadesine bakın ve seçtiğiniz veri tabanına göre her veri tipini belirleyin.
Teşekkürler - Bu şekilde yapabileceğinizin farkındayım, ancak özellikle çok büyük bir sıcaklık tablosu varsa, birden çok sütun ve tabloyu kontrol etmek için bir acıya dönüşüyor. - woggles
Gördüğüm @ gözlük. billinkc en lazy yaklaşım bu durumda daha iyi size uyar. - Icarus
şimdi sadece declare @ table deyimi komut dosyası için güzel tembel bir yol bulmaya ihtiyacım var :) - woggles
@woggles Bunun için tembel bir yaklaşım var mı bilmiyorum ama bu size sütun isimlerini, veri tiplerini ve her birinin uzunluğunu anlatacak bir sonuç kümesinde, SQL deyimini dinamik olarak oluştururken komut dosyasını oluşturabiliyorsunuz. SELECT sc.name,st.name as type_name ,sc.max_length FROM tempdb.sys.columns sc inner join sys.types st on st.system_type_id=sc.system_type_id WHERE [object_id] = OBJECT_ID('tempdb..#temp'); - Icarus
@woggles, SQL Server'ın şu anki sürümlerinde bir acıdır (hassasiyeti ve ölçeği unutmayın, nvarchar için maks_length için koşullu şartlar, max_length değerini değiştirerek) MAX -1 ise, Denali'deki diğer türler, tablo türleri, CLR türleri ile başa çıkmak için meta veri bulma özelliklerini kullanmanın çok daha iyi bir yolu olacaktır: sqlblog.com/blogs/aaron_bertrand/archive/2010/12/20/... - Aaron Bertrand
Diğer cevaplar, ihtiyacınız olan bilgiyi size verir, ancak tablo değişkenini tanımladığınızda yine de hepsini yazmanızı gerektirir.
Aşağıdaki TSQL, herhangi bir tablo için tablo değişkeninin tanımını hızlı bir şekilde oluşturmanıza izin verecektir.
Bu, aşağıdaki gibi tablo tanımlarını elle yazmak yerine çok fazla zaman kazandırabilir:
Tam olarak bugün aradığım şey - Todd
Tembel rotaya gidip kullanayım
veri türü ile sütun adı almak için bunu kullanın
veya Bunu kullanmak için yalnızca sütun adı almak
Set boşsa boolean döndürme jdk 6 dağ aslanı CSS uygulamada yüklenmiyor Farklı işletim sistemlerine karşı açık kaynak uygulamalarını kontrol etmek için çiftlik oluşturuyor mu? Bir div içindeki bir öğeye nasıl kaydırılır? [Buradaki en sevdiğin dil] programındaki tüm değişkenleri numaralandır veya listele [kapalı] ActionBar arka plan resmi