将nvarchar值'Internet Explorer 3 original'转换为数据类型int时转换失败 [英] Conversion failed when converting the nvarchar value 'Internet Explorer 3 original' to data type int

查看:213
本文介绍了将nvarchar值'Internet Explorer 3 original'转换为数据类型int时转换失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在SQL Server 2008(TSQL)中,我创建了一个这样的存储过程:

In SQL Server 2008 (TSQL), I've created a stored procedure like this:

CREATE PROCEDURE SP_1_10_2
AS
declare @mostValuableBook nvarchar(255)
SELECT @mostValuableBook = Name
FROM books
WHERE price =
    ( SELECT MAX(price)
      FROM books
      WHERE izd LIKE '%BHV%' );
return @mostValuableBook
GO

但是,当我试图执行时它:

But, when I'm trying to execute it:

declare @x nvarchar(255)
EXECUTE @x = SP_1_10_2;
SELECT 'The most expensive BHV book:', @x AS 'Name'
GO

我收到错误:


转换nvarchar值时转换失败'Internet
资源管理器3原始'到数据类型int。

似乎问题在于行

EXECUTE @x = SP_1_10_2;

你能告诉我有什么问题吗?为什么要尝试转换为int?

Can you please tell me what's wrong? Why is it trying to convert to int?

推荐答案

RETURN 不能用于返回 nvarchar / varchar 等。 RETURN用于返回一个整数,这可以表示为某种状态代码1 = True / 0 = False。阅读更多关于返回的信息: http://msdn.microsoft.com/en-us /library/ms174998.aspx

RETURN cannot be used to return nvarchar / varchar such as you have. RETURN is used to return an integer, this can be expressed as some sort of status code 1=True / 0=False. Read more about return here: http://msdn.microsoft.com/en-us/library/ms174998.aspx

在您的情况下,您只需要使用 OUTPUT 变量类似于C#或C ++中的pass-by-ref。您将变量传递给sproc,sproc修改它,并在 SELECT ... 之后得到预期的结果。

In your case, you simply need to use OUTPUT variables which is similiar to pass-by-ref in C# or C++. You pass the variable to the sproc, the sproc modifies it, and you get the expected results after a SELECT....

更改它以使您的参数成为输出参数:

Change it so that your parameters becomes an output parameter:

CREATE PROCEDURE SP_1_10_2
@mostValueableBook nvarchar(255) output
AS
SELECT @mostValuableBook = Name
FROM books
WHERE price =
    ( SELECT MAX(price)
      FROM books
      WHERE izd LIKE '%BHV%' );
SELECT @mostValuableBook
GO

这样称呼:

DECLARE @theValBook nvarchar(255)
EXECUTE SP_1_10_2 @mostValuableBook = @theValBook output

然后你可以说:

SELECT'最贵的书是',@ theValBook

这篇关于将nvarchar值'Internet Explorer 3 original'转换为数据类型int时转换失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆