这个是存储过程
ALTER PROCEDURE dbo.SelectFriendList (
@UID int,
@FRLIST nvarchar(2000)='' output
)AS

/*SET NOCOUNT ON if(@FR=null)    */

select @FRLIST=ufrilist from UserInfo where uid=@UID
return 
这个是部分的调用代码
                sqlhandler.ParamBuilder("@FRLIST", "", System.Data.SqlDbType.NVarChar, System.Data.ParameterDirection.Output);
                string list=Convert.ToString( sqlhandler.QueryWithOutputValues("@FRLIST"));
  
sqlhander是我自己写的一个封装sql操作类,设置各个参数就可以使用QueryWithOutputValues返回指定的参数值了。在sqlserver里测试是可以完整输出的,如果从sqlCommand里取出来,只能取到正确返回值的第一个字符。
比如数据库中取出的值是“a.b.c”
在sqlcommand中取出来的只有“a”了

解决方案 »

  1.   

    在sqlser里可以调出来的,可是在.net里就不行了。也没有报错
      

  2.   

    System.Data.SqlDbType.NVarChar 这一句没有定义 长度
      

  3.   

    cansum396(漆黑的夜) System.Data.SqlDbType.NVarChar 这一句没有定义 长度是这一句话没有定义长度么?改怎么定义?
    sqlhandler.ParamBuilder("@FRLIST", "", System.Data.SqlDbType.NVarChar, System.Data.ParameterDirection.Output);
      

  4.   

    有字符串的参Parameter不能一次用一个构造函数实现,要按如下来写:
    SqlParameter parameter = new SqlParameter("@FRLIST", 
            SqlDbType.NVarChar, 2000);
        parameter.Value = paramValue;    command.Parameters.Add(parameter);
      

  5.   

    楼主的情况应是如下的代码:SqlParameter parameter = new SqlParameter("@FRLIST", SqlDbType.NVarChar, 2000);
        parameter.Direction = ParameterDirection.Output;
        parameter.Value = paramValue;    command.Parameters.Add(parameter);
      

  6.   

    如果没有设置SqlDbType.NVarChar的长度,则默认的长度为1,所以楼主只取到了1个字符.设置成2000后才能取到存储过程返回的2000个字符.
      

  7.   

    System.Data.SqlClient.SqlParameter _p = new System.Data.SqlClient.SqlParameter(_ParamName, _DbType);
            _p.Direction = _ParamDirection;
            _p.Size =2000;
            _p.Value = _ParamValue;
    然后把这个值加进去就行了。呵呵。size一定要和数据库中的大小相符,否则还是不会输出!!!!!