Microsoft SQL Server 2000数据表的列和存储过程的参数都是有类型的,但我发现在写存储过程时很多参数类型是可以“混用”的,比如,下面的存储过程:
和下面的存储过程:
在测试存储过程时输出的结果是一样的,而数据列是有类型的——CHAR(4),
为什么呢?应该是存储过程在执行时对参数进行了隐式类型转换。
但写存储过程时确定参数的类型时应该注意:
1、应该尽量使用和数据列类型相同的数据类型,减少运行是的隐式类型转换;
2、不是所有类型都可以进行隐式类型转换的,如果使用不同的数据类型,很可能会发生错误:
图:Microsoft SQL Server数据类型转换图
另外,SQL Server自定义函数的参数也有类似情况。
本文探讨了在Microsoft SQL Server 2000中,不同类型的参数(如INT和CHAR(4))在存储过程中如何被隐式转换,并分析了这种转换对性能的影响。作者通过两个例子说明了即使参数类型不匹配,存储过程也能正常执行的原因。
4050

被折叠的 条评论
为什么被折叠?



