CodeSmith 5.0工具实例篇系列3——根据表生成新增的存储过程,针对MS Sqlserver。
运行该模板时,只需要选择单个表即可。
申明:该系列案例已通过CodeSmith Professional 5.0.1 Revision 4983版本的测试,以及生成的存储过程是针对MS Sqlserver。
操作说明 :运行CodeSmith Studio工具 ,创建Blank Template,并将文件名命名为:Create Proc.cst。
输入以下代码:
Code
<%@ CodeTemplate Language="C#" TargetLanguage="T-SQL" Src="" Inherits="" Debug="False" LinePragmas="True" Description="根据表生成新增的存储过程" ResponseEncoding="UTF-8"%>
<%@ Property Name="TableName" Type="SchemaExplorer.TableSchema" Default="" Optional="False" Category="" Description="请选择需要生成存储过程的表" OnChanged="" Editor="" EditorBase="" Serializer="" %>
<%@ Assembly Name="SchemaExplorer" %>
<%@ Import Namespace="SchemaExplorer" %>
------------------------------------
--说明:<%=TableName%>表的新增存储过程
--时间:<%= DateTime.Now %>
--技术支持:时间太快了
--邮箱地址:amwggyy504@163.com
--文章来源:http://amwggyy504.cnblogs.com
------------------------------------
<%
string Fields="";//表的字段
string Values="";//传入参数的值。
string Param="";//传入的参数。
foreach(ColumnSchema Column in TableName.Columns)
{
Fields+="["+Column.Name+"]";
Values+="@"+Column.Name;
Param+="@"+Column.Name+" " + Column.NativeType;
switch(Column.DataType)
{
case DbType.Decimal:
{
Param+="("+Column.Precision+","+Column.Scale+")";
break;
}
case DbType.Int32:
{
break;
}
default:
{
if(Column.Size>0)
Param+="("+Column.Size+")";
break;
}
}
if(Column.Name!=TableName.Columns[TableName.Columns.Count-1].Name)
{
Fields+=","+"\n";
Values+=","+"\n";
Param+=","+"\n";
}
}
%>
Create Proc Proc_<%=TableName.Name%>_Add
<%=Param%>
As
INSERT INTO <%=TableName.Name%>
(
<%=Fields%>
)
values
(
<%=Values %>
)