public string fourns()
        {
            string sql = "select * from Table_1 where 1=1";            if (!string.IsNullOrEmpty(textBox1.Text.Trim()))
            {
                sql += " and ID ='" + textBox1.Text.Trim() + "'";
            }
            if (!string.IsNullOrEmpty(textBox2.Text.Trim()))
            {
                sql += " and Name= '" + textBox2.Text.Trim() + "'";
            }
            if (!string.IsNullOrEmpty(comboBox1.Text.Trim()))
            {
                sql += " and Sex ='" + comboBox1.Text.Trim() + "'";
            }
            if (!string.IsNullOrEmpty(textBox4.Text.Trim()))
            {
                sql += " and Age='" + textBox4.Text.Trim() + "'";
            }
            if (!string.IsNullOrEmpty(comboBox2.Text.Trim()))
            {
                sql += " and Class='" + comboBox2.Text.Trim() + "'";
            }
            return sql.ToString();        }
上面这段写成存数过程怎么写?
create  proc chanxun 
@ID varchar(50),@Name varchar(50),
@Sex varchar(50),@Age varchar(50),@Class varchar(50)
as

解决方案 »

  1.   

    sql +=   这个在SQL server 里怎么表示呀。关键是
      

  2.   

    晕 想学习下!! 看来没这么简单啊create  proc chanxun 
    @ID varchar(50),@Name varchar(50),
    @Sex varchar(50),@Age varchar(50),@Class varchar(50)
    as
    declare @sql varchar(100) 
    set @sql= (select * from dbo.Table_1 where  1=1)
    IF(@ID != NULL)
    set @sql += ' and ID =@ID'
    if(@Name !=NULL)
    set @sql += 'and Name =@Name'
    if(@Sex != NULL)
    set @sql +=  'and Sex =@Sex'
    if(@Age != null)
    set @sql += 'and Age = @Age'
    if(@Class != null)
    set @sql += 'and Class = @Class'
    return @sql
    go没搞懂!!
      

  3.   

    SQL存储过程演示:Create Procedure Andy_Study1 @QQNumber varchar(10) asDeclare @sqlText varchar(100)set @sqlText="Select UserName,Password from QQUsers where Number=" + @QQNumberexec(@sqlText)goC#程序调用代码:cmd1.CommandText="Andy_Stuey1";cmd1.CommandType=CommandType.StoredProcedure;cmd1.Parameters.Add(new SqlParameter("@QQNumber","80001");
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/andy1118/archive/2010/02/08/5297698.aspx
      

  4.   

    這個意思嗎?create  proc chanxun 
    @ID varchar(50),@Name varchar(50),
    @Sex varchar(50),@Age varchar(50),@Class varchar(50)
    as
    declare @sql varchar(2000)
     set @sql = 'select * from Table_1 where 1=1 '
    if @ID<>''
        set @sql =@sql+' and ID =''' + @ID +'''
    if @Name <>''
        set @sql =@sql +' and Name =''' + @Name +'''
    if @Sex <>''
        set @sql =@sql+' and Sex =''' + @Sex +'''
    if @Age <>''
        set @sql =@sql+' and Age =''' + @Age +'''
    if @Class <>''
        set @sql =@sql+' and Class =''' + @Class +'''
    exec (@sql)
    --select @sql
      

  5.   

    額錯了
    發現全部少打一個點,,每行,,,, ID =''' + @ID +''''
    最後都應該4個點
      

  6.   

    这是一个返回值的问题  最后返回 @sql ,就是条件为空不为空的
      

  7.   

    CREATE PROCEDURE [dbo].[TEST]
    @ID NVARCHAR(50),
    @Name NVARCHAR(50),
    @Sex  NVARCHAR(2),
    @Age INT,
    @Class NVARCHAR(100)
    AS
    DECLARE @SQL VARCHAR(8000)
    SET @SQL = 'select * from Table_1 WHERE 1=1'
    IF @ID <> ''
    set @SQL = @sql + '  AND ID=' + @ID + ''
    IF @Name <> ''
    set @SQL = @sql + '  AND NAME=' + @Name + ''
    ............... EXEC(@SQL)
      

  8.   


        要是@SQL长度大于8000了咋办?
      

  9.   


    不会吧,你什么sql会如此的长?
      

  10.   


    create  proc chanxun 
    @ID varchar(50),@Name varchar(50),
    @Sex varchar(50),@Age varchar(50),@Class varchar(50)
    as
    declare @sql varchar(100) 
    select @sql= '(select * from dbo.Table_1 where  1=1'
    IF(@ID != NULL)
    select  @sql += ' and ID ='''+@ID+''
    if(@Name !=NULL)
    select  @sql += 'and Name ='''+@Name+''
    if(@Sex != NULL)
    select  @sql +=  'and Sex ='''+@Sex+''
    if(@Age != null)
    select  @sql += 'and Age ='''+@Age+''
    if(@Class != null)
    select  @sql += 'and Class ='''+@Class+''
    select @sql +=')'
    exec @sql
    go 可以建立存储过程
    可是 用exec chanxun  找不到该存储过程???
      

  11.   

    像这种SQL。到那里写也没有什么变化。一样跟着写就是。不过传进去的参数就多些了。
      

  12.   


    exec chanxun '001','name','M','18','A class'
    试试
      

  13.   

    select * from Table_1 where 1 = 1and (ID = @id or @id = '')and (Name = @name or @name = '')...
      

  14.   

    存储过程中好像不能有exec
    CREATE  proc chanxun 
    as
    declare @sql varchar(100) 
    set @sql= 'select * from dbo.Table_1 where  1=1'
    print @sql
    GO
    这样就可以CREATE  proc chanxun 
    as
    declare @sql varchar(100) 
    set @sql= 'select * from dbo.Table_1 where  1=1'
    exec @sql
    GO
    这样就不行
      

  15.   


    写入参数 报错:消息 2812,级别 16,状态 62,过程 chaxun,第 18 行
    找不到存储过程 '(select * from dbo.Table_1 where 1=1 )'。
    用20楼 print
    消息: (select * from dbo.Table_1 where 1=1 )语句有问题
      

  16.   

    create  proc chanxun 
    @ID varchar(50),@Name varchar(50),
    @Sex varchar(50),@Age varchar(50),@Class varchar(50)
    as
    declare @sql varchar(100) 
    SET @sql= 'select * from dbo.Table_1 where  1=1'
    IF(@ID != NULL)
    set @sql = @sql +  ' and ID ='''+@ID+''''
    if(@Name !=NULL)
    set @sql = @sql + 'and Name ='''+@Name+''''
    if(@Sex != NULL)
    set @sql = @sql +  'and Sex ='''+@Sex+''''
    if(@Age != null)
    set @sql = @sql +  'and Age ='''+@Age+''''
    if(@Class != null)
    set @sql = @sql +  'and Class ='''+@Class+''''exec @sql
    go 
      

  17.   

    sorryexec @sql 改为exec (@sql)