2012-01-12 14 views
5

bir MySQL sürüm I başka bir sütun olarak aynı tip bir şey ilan etmek gerekirse, ben sadece %type kullanabilirsiniz, var mı? Olarak çıkıyorOracle Oracle'ın% TÜRÜ

+0

Bunun MySQL'de mümkün olduğunu düşünmüyorum. –

+0

@EmmanuelN Yea ... Ben öyle düşünmedim. Biliyorsun, Oracle mükemmel değil, ama MySQL'in yoksun olduğu birkaç güzelliğe sahip. (Yani, PostGreSQL her iki dünyanın en iyisi, ama ben bu DB'ye aşığım) – cwallenpoole

cevap

2

Eh, kısa cevap, "hayır" ve ederken yapsak saklı bir işlev (veya başka bir dil kullanın) oluşturmak ve kendi özel fırında ayırma motoru tarafından tablonuzu oluşturmak için istekli iseniz, bu sadece değmez. C'est sera ...

0

bir şeylerin MySQL Oracle %type tek alternatifi Eksik sürece şudur,

SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'tbl_name' AND COLUMN_NAME = 'col_name'; 
+0

Bir "CREATE TABLE" ifadesinde kullanamayacağınızdan eminim. – Mchl

+0

@Dennis Bir sütun türünü nasıl alacağımı biliyorum, ancak şema bütünlüğü hakkında düşünmek istemediğimden (düşünme tehlikelidir), değişken bir bildirimde veya sütun tanımında kullanabileceğim bir şeye sahip olmayı tercih ederim. – cwallenpoole

+0

@cwallenpoole Okunabilir. Teoride, yukarıdaki çıkışı bir değişkene kaydeden bir prosedür oluşturabilmelisiniz ve sonra oluşturmaya çalıştığınız tabloyu oluşturmak için söz konusu değişkeni kullanmalısınız. Bunu denemedim, ancak çalışacağından emin olamadım. –

-1

bu

SET @field_type = (select DATA_TYPE from INFORMATION_SCHEMA.columns 
        where TABLE_NAME='users' and COLUMN_NAME='name'); 

gibi prosedürlerde bunu kullanabilirsiniz ve daha sonra kolayca @field_type değişkeni kullanabilirsiniz.

+0

Cevabımda belirtildiği gibi, "CREATE TABLE" sözdiziminin bir parçası olarak diğerinin türüne bağlı olarak bir değişken yazamazsınız. Bir değişkendeki erişime sahip olmak neredeyse hiç işe yaramıyor – cwallenpoole