CREATEproc GetProc ( @tableNamenvarchar(100), @procNamenvarchar(100) ) as --declare some variables that used by cursor declare@columnNamenvarchar(100), @typeNamenvarchar(100), @IsFixLengthbit, @IsDecimalbit, @precisionint, @scaleint , @max_lengthint --declare some variables that composed the procedure declare@sql1nvarchar(1000), @sql2nvarchar(1000), @sql3nvarchar(1000) set@sql1='create proc '+@procName+char(13) set@sql1=@sql1+'('+char(13) set@sql2='insert into '+@tableName+char(13)+'(' set@sql3='values'+char(13) set@sql3='values'+char(13)+'(' DECLARE proc_cur CURSORFOR SELECT c.name ColumnName,t.name typeName,case when t.name='bigint'THEN1 when t.name='bit'THEN1 when t.name='datetime'THEN1 when t.name='float'THEN1 when t.name='image'THEN1 when t.name='int'THEN1 when t.name='money'THEN1 when t.name='real'THEN1 when t.name='smalldatetime'THEN1 when t.name='smallint'THEN1 when t.name='smallmoney'THEN1 when t.name='tinyint'THEN1 when t.name='uniqueidentifier'THEN1 else0 endas IsFixLength, Case when t.name='decimal'THEN'1' when t.name='numeric'THEN'1' else0 endas IsDecimal, c.precision,c.scale,c.max_length FROM sys.columns c innerjoin sys.types t on c.user_type_id=t.user_type_id where c.object_id=object_Id(@tableName) and t.name<>'timestamp'and is_computed=0 OPEN proc_cur; FETCHNEXTFROM proc_cur into@columnName,@typeName,@IsFixLength,@IsDecimal,@precision,@scale,@max_length WHILE@@FETCH_STATUS=0 BEGIN if@IsFixLength=1 begin set@sql1=@sql1+'@'+@columnName+''+@typeName+','+char(13) end elseif@IsDecimal=1 set@sql1=@sql1+'@'+@columnName+''+@typeName+'('+cast(@precisionasvarchar(4))+','+cast(@precisionasvarchar(4))+'),'+char(13) else set@sql1=@sql1+'@'+@columnName+''+@typeName+'('+cast(@max_lengthasvarchar(4))+'),'+char(13) set@sql2=@sql2+'['+@columnname+'],' set@sql3=@sql3+'@'+@columnName+',' FETCHNEXTFROM proc_cur into@columnName,@typeName,@IsFixLength,@IsDecimal,@precision,@scale,@max_length END; CLOSE proc_cur; DEALLOCATE proc_cur; --remove the last comma and char(13) set@sql1=left(@sql1,len(@sql1)-2) --add the ) set@sql1=@sql1+char(13)+')'+char(13)+'as'+char(13) set@sql2=left(@sql2,len(@sql2)-1) +')' set@sql3=left(@sql3,len(@sql3)-1) +')' print@sql1 print@sql2 print@sql3
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2006-07-10 httpRuntime 元素(ASP.NET 设置架构)
2006-07-10 UpdateControl,ScriptManager,TimerControl,AutoCompleteExtender