模板天下 | 网页模板 | 学 院 | 源 码 | 书 籍 | 壁 纸 | 字 体 | JS脚本 | FLASH源码 | 软 件 | 矢 量 | 服务器软件 | 素 材 | 其 它 |
设为主页
加入收藏
联系站长
平面设计 | 网页制作 | 程序编写 | 数 据 库 | 媒体动画 | 网络冲浪 | 服务器相关 | 站长乐园 | 业界动态 |
当前在线
MS SQL Server存储过程参数的隐式类型转换
2007-8-27 17:45:55  作者:模板天下收集整理  来源:未知 网友评论 0 条 论坛
   

Microsoft SQL Server 2000数据表的列和存储过程的参数都是有类型的,但我发现在写存储过程时很多参数类型是可以“混用”的,比如,下面的存储过程:

 

/**//*
 Name :    Stp_TestDifferentParaType_INT
 Function :   测试不同参数类型对存储过程的影响
 Author :   Waxdoll Cheung
 Date :    2005-04-07
*/
 
CREATE PROCEDURE dbo.Stp_TestDifferentParaType_INT
  -- 统计年月
  @TongJiNianYue INT
AS
 SELECT [FM_产品登记].* FROM [FM_产品登记] WHERE (所属年份 = @TongJiNianYue) 
 
 RETURN
GO
 
 

和下面的存储过程:


/**//*
 Name :    Stp_TestDifferentParaType_CHAR
 Function :   测试不同参数类型对存储过程的影响
 Author :   Waxdoll Cheung
 Date :    2005-04-07
*/
 
CREATE PROCEDURE dbo.Stp_TestDifferentParaType_CHAR
  -- 统计年月
  @TongJiNianYue CHAR(4)
AS
 SELECT [FM_产品登记].* FROM [FM_产品登记] WHERE (所属年份 = @TongJiNianYue) 
 
 RETURN
GO
 
 

在测试存储过程时输出的结果是一样的,而数据列是有类型的——CHAR(4),
为什么呢?应该是存储过程在执行时对参数进行了隐式类型转换。

但写存储过程时确定参数的类型时应该注意:
1、应该尽量使用和数据列类型相同的数据类型,减少运行是的隐式类型转换;
2、不是所有类型都可以进行隐式类型转换的,如果使用不同的数据类型,很可能会发生错误: 
 图:Microsoft SQL Server数据类型转换图

另外,SQL Server自定义函数的参数也有类似情况。

共分1页  [1] 

>> 相关文章

关于网站 | 客服中心 | 服务条款 | 合作伙伴 | 广告联系 | 本站历程 | 网站导航 | 发布资源 == 好的资源 大家共享

吉ICP备05000107号