动态字段、动态查询内容的存储过程怎么写?
还有,在VB里怎么执行?大虾们给个详细正确的代码来看下,谢谢!~~!

解决方案 »

  1.   

    用EXECUTE在存储过程中执行一个字符串,想得到什么就能得到什么。
      

  2.   

    存储过程中:Create Proc BrowserTable 
    @TableName varchar(20),
    @TableFiled varchar(50) 
    as exec('Select ' + @TableFiled + ' from ' + @TableName)
    VB中:dim Cn as new ADODB.Connction
    dim rs as new adodb.recordsetset rs = Cn.exec ("BrowserTable '" & strTableName & "','"& strFiled &"'")'strTableName 为表名
    'strFiled 为表中的字段名,如多个字段可:ID,Name之类的。
      

  3.   

    我换了这句就不行啦,在VB里调用,说必须声明@dian变量。
    exec('select * from tab_he where ' + @kk + ' like ''%'' + @dian + ''%''')
      

  4.   

    Create Proc BrowserTable 
    as --需要这样定义变量的。
    declare @kk varchar(50)
    declare @dian varchar(50)exec('select * from tab_he where ' + @kk + ' like ''%'' + @dian + ''%''')
      

  5.   

    我干脆贴出来了,这个问题问了N久都没搞懂:
    SQL:
    CREATE Proc BrowserTable 
    as 
    declare @kk varchar(20)
    declare @dian varchar(20)Set NoCount On
    exec('select * from tab_he where ' + @kk + ' like ''%'' + @dian + ''%''')
    Set NoCount Off
    GOVB里调用:
    Set rs = cn.Execute("BrowserTable 用户名,l")
    Set VSFlexGrid1.DataSource = rs错误提示说:BrowserTable没有参数,却为该过程提供了参数。
      

  6.   

    '你的存储过程结构错了,我给你修改了下CREATE Proc BrowserTable 
     @kk varchar(20),
     @dian varchar(20)
    as Set NoCount On
     declare @Sql_str  nchar(100)
    set @Sql_str='select * from tab_he where ' + @kk + ' like ''%' + @dian +'%'''
    EXECUTE sp_executesql @sql_strSet NoCount Off
    GO
      

  7.   

    呵呵,终于没出错了,但还是差一点。
    为什么我用:
    Set VSFlexGrid1.DataSource = rs
    就可以,如果是用VB自带的表就不行:Set dataGrid1.DataSource = rs错误提示:行集合不能作为标签
      

  8.   

    dataGrid1不支持 ADO.Recordset 数据集合用ADO控件
      ADODC1.recordSource="exec BrowserTable 用户名,l"
      ADODC1.refresh
      Set dataGrid1.DataSource =ADODC1不过这样的写法有SQL注入漏洞,最好用传递参数的办法.
      

  9.   

    Adodc1.RecordSource = cn.Execute("BrowserTable 用户名,l")
    Adodc1.Refresh
    set datagrid1.DataSource =adodc1像上面那样写还是不行哩,提示:类型不匹配,上面的第一句错。
    如果改成:set adodc1.recordsource也不行,属性无效。大家帮下,怎么把存储过程的内容在datagrid里显示出来
      

  10.   

    用户名 ,l 的变量类型是字符串吗?
    我用:
     ADODC1.recordSource="exec BrowserTable 用户名,l"
     ADODC1.refresh
     Set dataGrid1.DataSource =ADODC1
    实际测试通过了啊