--CRUDろ襴渚碁り鍵
--SSMS Ctrl + T 襯 れ 麹 ク讌伎 語.
/****** Object: StoredProcedure [dbo].[usp_createsql] Script Date: 2012-07-25 れ 10:59:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--crudろ襴渚碁り鍵
--ssms ctrl + t 襯 れ 麹 ク讌伎 語.
ALTER proc [dbo].[usp_createsql]
@sname varchar(255) --schema name
, @tname varchar(255) --table name
, @curd char(1)
, @spyn tinyint = 1
as
--exec usp_createsql 'ろる覈', '企覈', 'c'
--exec usp_createsql 'ろる覈', '企覈', 'u'
--exec usp_createsql 'ろる覈', '企覈', 'r'
--exec usp_createsql 'ろる覈', '企覈', 'd'
begin
set concat_null_yields_null on
set nocount on
set statistics io off
declare @maxno varchar(1024)
select
@maxno = cast(max(ordinal_position) as varchar)
from information_schema.columns
where table_name = @tname
and table_schema = @sname
if upper(@curd) = 'c'
begin
select sp
from (
select 'create proc usp_' +
case
when @curd = 'c' then 'create'
when @curd = 'r' then 'read'
when @curd = 'u' then 'update'
when @curd = 'd' then 'delete'
end + '_' + @tname sp
union all
select
case
when ordinal_position = 1 then ' ' + '@' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '')
else ','+ ' ' + '@' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '') end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
union all
select 'as') t
where @spyn = 1
union all
select
case
when ordinal_position = 1 then 'insert ' + @sname + '.' + @tname + char(13) + '(' + char(13) + ' ' + column_name
when ordinal_position = @maxno then ','+ ' ' + column_name + char(13) + ')'
else ','+ ' ' + column_name end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
union all
select
case
when ordinal_position = 1 then 'values' + char(13) + '(' + char(13) + ' ' + '@' + column_name
when ordinal_position = @maxno then ','+ ' ' + '@' + column_name + char(13) + ')'
else ','+ ' ' + '@' + column_name end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
end else if upper(@curd) = 'u'
begin
select sp
from (
select 'create proc usp_' +
case
when @curd = 'c' then 'create'
when @curd = 'r' then 'read'
when @curd = 'u' then 'update'
when @curd = 'd' then 'delete'
end + '_' + @tname sp
union all
select
case
when ordinal_position = 1 then ' ' + '@' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '')
else ','+ ' ' + '@' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '') end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
union all
select 'as') t
where @spyn = 1
union all
select
case
when ordinal_position = 1 then 'update ' + @sname + '.' + @tname + char(13) + 'set ' + char(13) + ' ' + column_name + ' = @' + column_name
else ','+ ' ' + column_name + ' = @' + column_name end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
union all
select 'from ' + @sname + '.' + @tname
end else if upper(@curd) = 'r'
begin
select sp
from (
select 'create proc usp_' +
case
when @curd = 'c' then 'create'
when @curd = 'r' then 'read'
when @curd = 'u' then 'update'
when @curd = 'd' then 'delete'
end + '_' + @tname sp
union all
select
case
when ordinal_position = 1 then ' ' + '@' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '')
else ','+ ' ' + '@' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '') end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
union all
select 'as') t
where @spyn = 1
union all
select
case
when ordinal_position = 1 then 'select ' + char(13) + ' ' + column_name
else ','+ ' ' + column_name end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
union all
select 'from ' + @sname + '.' + @tname
end else if upper(@curd) = 'd'
begin
select sp
from (
select 'create proc usp_' +
case
when @curd = 'c' then 'create'
when @curd = 'r' then 'read'
when @curd = 'u' then 'update'
when @curd = 'd' then 'delete'
end + '_' + @tname sp
union all
select
case
when ordinal_position = 1 then ' ' + '@' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '')
else ','+ ' ' + '@' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '') end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
union all
select 'as') t
where @spyn = 1
union all
select 'delete ' + @sname + '.' + @tname + char(13) + 'from ' + @sname + '.' + @tname columnname
union all
select
case
when ordinal_position = 1 then 'where 1=1' + char(13) + 'and ' + column_name + ' = @' + column_name
else 'and '+ column_name + ' = ' + '@' + column_name end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
end else
begin
select '覯: exec usp_createsql ''ろる覈'', ''企覈'', {''c'', ''u'', ''r'', ''d''}'
end
--覲
select
case
when ordinal_position = 1 then ' ' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '')
else ','+ ' ' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '') end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
select
case
when ordinal_position = 1 then ' @' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '')
else ','+ ' ' + '@' + column_name + ' ' + data_type collate korean_wansung_ci_as + isnull('(' + cast(character_maximum_length as varchar) + ')', '') end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
select
case
when ordinal_position = 1 then ' convert(nvarchar(200), ' + case when data_type like '%date%' then 'convert(varchar, @' + column_name + ', 121)' else '@' + column_name end + ')'
else '+ '','' + '+ 'convert(nvarchar(200), ' + case when data_type like '%date%' then 'convert(varchar, @' + column_name + ', 121)' else '@' + column_name end + ')' end columnname
from information_schema.columns
where table_name = @tname
and table_schema = @sname
end