小弟刚接触存储过程,遇到一个问题 
用户表 userinfou_id   u_name   u_pwd
1       ok        ok123
2       ok2       ok124
3       ok3       ok22建立一个存储过程:
create procedure wudi @u_name nvarchar  as
select * from userinfo where u_name=@u_name
go
然后再查询分析器中执行
exec  wudi ok
返回不了任何数据??????????????????不知道因为。它应该返回
u_id    u_name     u_pwd
1         ok        ok123

解决方案 »

  1.   


    exec  wudi 'ok' 
      

  2.   

    直接运行下select * from userinfo where u_name=‘ok’ 看看有没数据啊  存储过程没错的哦
      

  3.   

    把nvarchar  字段换掉--> 测试时间:2009-12-22 12:50:55--> 我的淘宝:《戒色坊》http://shop36766744.taobao.com/if object_id('[userinfo]') is not null drop table [userinfo]
    create table [userinfo]([u_id] int,[u_name] varchar(3),[u_pwd] varchar(5))
    insert [userinfo]
    select 1,'ok','ok123' union all
    select 2,'ok2','ok124' union all
    select 3,'ok3','ok22'select * from [userinfo] where u_name='ok'
    create procedure wudi @u_name varchar(200)  as
    select * from userinfo where u_name=@u_name
    go exec  dbo.wudi 'ok'/*u_id        u_name u_pwd 
    ----------- ------ ----- 
    1           ok     ok123(所影响的行数为 1 行)*/drop table [userinfo]
    drop procedure wudi
      

  4.   

    SQL codeexec  wudi 'ok' select * from userinfo where u_name='ok'看看
      

  5.   

    create procedure wudi @u_name nvarchar  as 
    select * from userinfo where u_name=@u_name 
    go 改为
    create procedure wudi @u_name nvarchar(20)  as 
    select * from userinfo where u_name=@u_name 
    go 
      

  6.   


    create procedure wudi 
    @u_name nvarchar(100)  
    as 
    select * from userinfo where u_name=@u_name 
    go 
      

  7.   

    create procedure wudi 
    @u_name nvarchar  
    as 
    declare @Sql nvarchar(3000)
    set @Sql='select * from userinfo where 1=1 '
    set @Sql=@sql+' and u_name='''+@u_name+''''
    exec(@sql)
      

  8.   

    知道原因了。我把u_name的字段类型改成 varchar  就可以。但是改成 nvarchar使用存储过程就得不到数据
      

  9.   


    create procedure wudi 
    (
    @u_name nvarchar(100)  
    )
    as 
    select * from userinfo where u_name=@u_name 
    go