asp 게시판 만들 때 게시판의 모든 컬럼정보 확인할 수 있는 프로시저(SP)
2009. 9. 15. 12:01
/*
exec tn 'Board'
*/
CREATE Procedure tn --TableName의 약어로 한거니 본인 편한 이름으로 수정..
@tablename varchar(100)
as
declare @table_name nvarchar(384), @viewtype varchar(20)
set @table_name = @tablename -- 테이블명
set @viewtype = 'vbcmd' -- spparam=저장프로시저파라미터, vbfn=ADODB.Command 파미터, vbcmd=ADODB.Command 파미터
if(@viewtype is null or len(@viewtype) = 0)
begin
select
a1.name
, a2.name as typename
, a1.length
, NULLABLE = convert(smallint, ColumnProperty (a1.id, a1.name, 'AllowsNull'))
from syscolumns a1, systypes a2
where a1.id = object_id(@table_name)
and a1.xtype = a2.xtype
order by colid asc
end
else if(@viewtype = 'spparam')
begin
select
',@' + a1.name
+ ' ' + a2.name
+ case
when a2.name = 'binary'
or a2.name = 'char'
or a2.name = 'nchar'
or a2.name = 'nvarchar'
or a2.name = 'varbinary'
or a2.name = 'varchar' then '(' + convert(varchar, a1.length) + ')'
else ''
end typelength
from syscolumns a1, systypes a2
where a1.id = object_id(@table_name)
and a1.xtype = a2.xtype
order by colid asc
end
else if(@viewtype = 'vbfn')
begin
select
'ByVal ' + a1.name + ', _'
from syscolumns a1, systypes a2
where a1.id = object_id(@table_name)
and a1.xtype = a2.xtype
order by colid asc
end
else if(@viewtype = 'vbcmd')
begin
select
'ByVal ' + a1.name + ', _',
'.Parameters.Append .CreateParameter("' + a1.name
+ '", '
+ case a2.name
when 'bigint' then 'adBigInt'
when 'binary' then 'adBinary'
when 'bit' then 'adBoolean'
when 'char' then 'adChar'
when 'datetime' then 'adDate'
when 'decimal' then 'adDecimal'
when 'float' then 'adSingle'
when 'int' then 'adInteger'
when 'money' then 'adCurrency'
when 'nchar' then 'adChar'
when 'ntext' then 'adLongVarChar'
when 'numeric' then 'adNumeric'
when 'nvarchar' then 'adVarChar'
when 'real' then 'adSingle'
when 'smalldatetime' then 'adDate'
when 'smallint' then 'adSmallInt'
when 'smallmoney' then 'adCurrency'
when 'sql_variant' then 'adVariant'
when 'text' then 'adLongVarChar'
when 'timestamp' then 'adDBTimeStamp'
when 'tinyint' then 'adTinyInt'
when 'varbinary' then 'adVarBinary'
when 'varchar' then 'adVarChar'
else '?' + a2.name
end
+ ', adParamInput, '
+ case
when a2.name = 'binary'
or a2.name = 'char'
or a2.name = 'nchar'
or a2.name = 'nvarchar'
or a2.name = 'varbinary'
or a2.name = 'varchar' then convert(varchar, a1.length)
when a2.name = 'ntext'
or a2.name = 'text' then 'LenB(' + a1.name + ')'
else '0'
end
+ ', ' + a1.name + ')'
, a1.name
, ',@' + a1.name
+ ' ' + a2.name
+ case
when a2.name = 'binary'
or a2.name = 'char'
or a2.name = 'nchar'
or a2.name = 'nvarchar'
or a2.name = 'varbinary'
or a2.name = 'varchar' then '(' + convert(varchar, a1.length) + ')'
else ''
end typelength
, ',@' + a1.name
, a1.NAME + ' = Trim(Request("' + a1.NAME + '"))'
, a1.NAME + ' = Trim(objRs("' + a1.NAME + '"))'
, 'dicParams.Add "' + a1.NAME + '", ' + a1.NAME
from syscolumns a1, systypes a2
where a1.id = object_id(@table_name)
and a1.xtype = a2.xtype
order by colid asc
end
'일상에서' 카테고리의 다른 글
무한도전 - 품절남 구매하기.. (4) | 2009.09.19 |
---|---|
원곡보다 먼저 듣게 된 CD브레이커.. (0) | 2009.09.16 |
인터넷으로도 달러통장 개설이 가능 - 우리은행 (0) | 2009.09.09 |
서울도시가스 8월 요급 납부.. (0) | 2009.09.02 |
이효리가 주는 완소선물.. 인터파크 (0) | 2009.09.01 |