CREATE PROCEDURE [dbo].[confirm] 
(@code char(6),
 @psw  char(10),
 @name varchar(8) output)
AS
select @name=name
from temployee
where ( employeeno=@code) and (psw=@psw)if @name is null set @name= '2'   --这个值传递到程序的时候竟然=2(integer),为什么?_Q1
GO@name 这个变量如果temployee的name的值为数字的时候,没有问题
可是,当为字母或者汉字的时候就会在这个存储过程执行的过程中报数据转换错误,无法执行此过程temployee.name的类型是char(8)能给我一些关于存储过程返回字符(串)类型参数的相关知识吗?

解决方案 »

  1.   

    改一下:
    CREATE PROCEDURE [dbo].[confirm] 
    (@code char(6),
     @psw  char(10),
     @name varchar(8) output)
    AS
    select @name=convert(varchar(8),name)
    from temployee
    where ( employeeno=@code) and (psw=@psw)if @name is null set @name= '2'   --这个值传递到程序的时候竟然=2(integer),为什么?_Q1
    GO
      

  2.   

    如果返回的值不多,是否可以用Select @Name 返回呢?执行改为Open