sql类型转换:MS SQL Server存储过程参数的隐式类型转换来源: 发布时间:星期二, 2009年2月24日 浏览:0次 评论:0
="t18">Microsoft SQL Server 2000数据表列和存储过程参数都是有类型但我发现在写存储过程时很多参数类型是可以“混用”比如下面存储过程:
/**//* Name : Stp_TestDferentParaType_INT Function : 测试区别参数类型对存储过程影响 Author : Waxdoll Cheung Date : 2005-04-07 */ CREATE PROCEDURE dbo.Stp_TestDferentParaType_INT -- 统计年月 @TongJiNianYue INT AS SELECT [FM_产品登记].* FROM [FM_产品登记] WHERE (所属年份 = @TongJiNianYue) RETURN GO 和下面存储过程: /**//* Name : Stp_TestDferentParaType_CHAR Function : 测试区别参数类型对存储过程影响 Author : Waxdoll Cheung Date : 2005-04-07 */ CREATE PROCEDURE dbo.Stp_TestDferentParaType_CHAR -- 统计年月 @TongJiNianYue CHAR(4) AS SELECT [FM_产品登记].* FROM [FM_产品登记] WHERE (所属年份 = @TongJiNianYue) RETURN GO 在测试存储过程时输出结果是样而数据列是有类型——CHAR(4), 为什么呢?应该是存储过程在执行时对参数进行了隐式类型转换 但写存储过程时确定参数类型时应该注意: 1、应该尽量使用和数据列类型相同数据类型减少运行是隐式类型转换; 2、不是所有类型都可以进行隐式类型转换如果使用区别数据类型很可能会发生: 图:Microsoft SQL Server数据类型转换图 另外SQL Server自定义参数也有类似情况 0
相关文章读者评论发表评论 |
|