【发布时间】:2014-12-17 16:58:52
【问题描述】:
我们有一个从应用程序获取调用的存储过程。 SP 的输入之一是 SSN。我们使用的是 SQL Server 2008R2 企业版。
SSN 数据类型输入为VARCHAR(9)。我们获取该 SSN 并将其加入一个将 SSN 存储为DECIMAL(9,0) 的表。这会在执行时导致隐式转换并影响性能。
我最初的计划是让输入以VARCHAR 的形式输入,然后将变量复制到另一个具有DECIMAL 数据类型的变量,但是,我们在这个过程中遇到了问题。当有新客户时,用户还可以将文本输入为“新”。发生这种情况时,我们会收到无法将数据类型 varchar 转换为十进制的消息。
有没有办法根据接收到的输入有条件地更改变量的数据类型?
这是我现在尝试使用的示例,但无济于事,因为输入“新”的实例会导致转换错误:
CREATE PROCEDURE [dbo].[StoredProcedureFromApplication](
@SubscriberSSN VARCHAR(9))
AS
DECLARE @SSN_DEC DECIMAL(9,0)
SET @SSN_DEC = @SubscriberSSN
关于如何更改数据类型的任何想法?
【问题讨论】:
标签: sql variables sql-server-2008-r2 type-conversion