SQL (Structured Query Language) digunakan untuk berkomunikasi dengan database. SQL menjadi salah satu skill yang diperlukan oleh berbagai profesi di industri data seperti Data Analyst, Data Scientist, Database Administrator, Data Engineer dan sebagainya. Skill satu ini memiliki beragam fungsi yang bisa membantu pekerjaan praktisi data. Beberapa sistem manajemen basis data relasional umum yang menggunakan SQL adalah Oracle, Sybase, Microsoft SQL Server, Access, Ingres dan sebagainya.
Salah satunya adalah Microsoft SQL Server. Software jenis RDBMS (Relational Database Management System) ini cukup sering digunakan penggunanya, karena pemakaiannya yang fleksibel dapat digunakan dari jenis laptop manapun ke jaringan server cloud dan lain-lain. Perkembangannya pun cukup menjanjikan mulai dari versi SQL Server 1.0 yang pertama dirilis dan hingga saat ini.
Sebagai seorang Developer yang menggunakan SQL Server sebagai Database dan Bahasa Pemrograman C# tentunya sudah tidak asing dengan istilas Class Model.
Class Model biasa diartikan sebagai representasi dari table yang digunakan. Namun bagi sebagaian Developer terkadang membuat Class Model merupakan pekerjaan yang sedikit banyak akan memakan waktu.
Pembuatan Class Model sebetulnya bisa diakali dengan menggunakan Generator seperti Entity Framework (EF). EF Sendiri sering digunakan jika pengembangan aplikasi menggunakan metode “Database First” sehingga class Object akan terbentuk secara otomatis.
Berikut adalah cara untuk mengkonversi Table ke CSharp class menggunakan PL/SQL
--Updated by @Sean on 23th,December 2022
declare @TableName sysname = 'NamaTableMu' -- Replace this with your database table name.
declare @Result varchar(max) = 'public class ' + @TableName + '
{'
select @Result = @Result + '
public ' + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }
'
from
(
select
replace(col.name, ' ', '_') ColumnName,
column_id ColumnId,
case typ.name
when 'bigint' then 'long'
when 'binary' then 'byte[]'
when 'bit' then 'bool'
when 'char' then 'string'
when 'date' then 'DateTime'
when 'datetime' then 'DateTime'
when 'datetime2' then 'DateTime'
when 'datetimeoffset' then 'DateTimeOffset'
when 'decimal' then 'decimal'
when 'float' then 'float'
when 'image' then 'byte[]'
when 'int' then 'int'
when 'money' then 'decimal'
when 'nchar' then 'string'
when 'ntext' then 'string'
when 'numeric' then 'decimal'
when 'nvarchar' then 'string'
when 'real' then 'double'
when 'smalldatetime' then 'DateTime'
when 'smallint' then 'short'
when 'smallmoney' then 'decimal'
when 'text' then 'string'
when 'time' then 'TimeSpan'
when 'timestamp' then 'DateTime'
when 'tinyint' then 'byte'
when 'uniqueidentifier' then 'Guid'
when 'varbinary' then 'byte[]'
when 'varchar' then 'string'
else 'UNKNOWN_' + typ.name
end ColumnType,
case
when col.is_nullable = 1 and typ.name in ('bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset', 'decimal', 'float', 'int', 'money', 'numeric', 'real', 'smalldatetime', 'smallint', 'smallmoney', 'time', 'tinyint', 'uniqueidentifier')
then '?'
else ''
end NullableSign
from sys.columns col
join sys.types typ on
col.system_type_id = typ.system_type_id AND col.user_type_id = typ.user_type_id
where object_id = object_id(@TableName)
) t
order by ColumnId
set @Result = @Result + '
}'
SELECT @Result