我的存储过程是这样的
CREATE PROCEDURE GetCardByNumber 
@CardNumber nvarchar(255)
 AS
 DECLARE @sql NVARCHAR(2000)     set @CardNumber = '''' + replace(@CardNumber, '.', ''',''') + '''' SET @sql = 'select * from CardTable where CardNumber in (' + @CardNumber + ')'
exec @sql
GO等我一运行的时候就报错:未能找到存储过程 'select * from CardTable where CardNumber in ('226026275526')'。请帮忙分析一下是那出错了。谢谢

解决方案 »

  1.   

    exec @sql====>
    exec (@sql)
      

  2.   

    set @CardNumber =replace(@CardNumber, '.', ',')
    SET @sql = 'select * from CardTable where CardNumber in (‘’' + @CardNumber + '‘’)'
    exec @sql
      

  3.   

    set @CardNumber =replace(@CardNumber, '.', ',')
    SET @sql = 'select * from CardTable where CardNumber in (‘’' + @CardNumber + '‘’)'
    exec @sql还是不行,未能找到存储过程 'select * from CardTable where CardNumber in (''888574781435'')'。 
      

  4.   

    exec @sql====>
    exec (@sql)
    能否详细说一下什么意思,我有点看不明白
      

  5.   

    用了这个exec (@sql)后查不到数据
      

  6.   

    就是你执行@sql的语句,正确方式为 exec(@sql)
      

  7.   

    declare @CardNumber varchar(50)
    DECLARE @sql NVARCHAR(2000)
    set @CardNumber='1.2.3.4'
         set @CardNumber = '''' + replace(@CardNumber, '.', ''',''') + ''''
    select @CardNumber
    SET @sql = 'select 1 where '''+'1'+''' in (' + @CardNumber + ')'
    exec (@sql)----->这样都可以查到阿
      

  8.   

    前面程序中写参数是怎么写的大家看看有错误吗?
    CardData cards = new CardData();
    this.ViewState["卡号"] += this.CardNumberTextBox.Text +"," + ".";
    string[] ary = this.ViewState["卡号"].ToString().Split(','); 
    foreach(string s in ary)
    {
    if(s.Trim() != "")
    {
    using (CardAccess ca=new CardAccess())
    {
    cards = ca.GetCardByNumber(s);
    }
    }
    }
      

  9.   

    上面的有点看不清,看这个
    CardData cards = new CardData();
    this.ViewState["卡号"] += this.CardNumberTextBox.Text +"," + ".";
    string[] ary = this.ViewState["卡号"].ToString().Split(','); 
    foreach(string s in ary)
    {
    if(s.Trim() != "")
    {
    using (CardAccess ca=new CardAccess())
    {
    cards = ca.GetCardByNumber(s);
    }
    }
    }