专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » sql类型转换:MS SQL Server存储过程参数的隐式类型转换 »正文

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

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: