Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 存储过程返回nvarchar_Sql Server 2008_Stored Procedures - Fatal编程技术网

Sql server 2008 存储过程返回nvarchar

Sql server 2008 存储过程返回nvarchar,sql-server-2008,stored-procedures,Sql Server 2008,Stored Procedures,我的代码如下: CREATE PROCEDURE TEST1 (@id INT, @name NVARCHAR(30) OUTPUT) AS SELECT @name = NAME FROM TEACHER WHERE ID = @id; 及 顶部代码正常,但第二次出现错误: Msg 245,16级,状态1,程序测试2,第174行 转换nvarchar值“Nguy”时转换失败ễn Thanh Tùng'到数据类型int 您能帮我解释并修复它吗???您不能使

我的代码如下:

CREATE PROCEDURE TEST1 
    (@id INT, @name NVARCHAR(30) OUTPUT)
AS
    SELECT @name = NAME 
    FROM TEACHER 
    WHERE ID = @id;

顶部代码正常,但第二次出现错误:

Msg 245,16级,状态1,程序测试2,第174行
转换nvarchar值“Nguy”时转换失败ễn Thanh Tùng'到数据类型int

您能帮我解释并修复它吗???

您不能使用
返回
从SQL Server存储过程返回
varchar
-您只能返回整数值

请参阅MSDN文档,其中明确说明:

过程可以返回一个称为返回码的整数值,以指示过程的执行状态

通常,此类值用于指示受存储过程影响的行数,或指示错误代码

如果需要返回字符串,则必须使用
OUTPUT
参数或返回结果集(使用
SELECT
语句)

CREATE PROCEDURE TEST2(@id INT)
AS
    DECLARE @name NVARCHAR(30);

    SELECT @name = NAME 
    FROM TEACHER 
    WHERE ID = @id;

    RETURN @name;