大家帮我改下,初次写这些东西,不懂呀。
create proc um_qing2 @kk varchar(50),@dian varchar(50)
as
Set NoCount On
select * from tab_he where 'kk' like '%'+@dian+'%'
Set NoCount Off
go
上面的where 'kk' like这时应该是写错了,但我不知道怎么写。
还有,在VB里调用这个过程,查找字段名“名称”=“广州”的记录:
Set rs1 = cn.Execute("qing1", 名称, 广州)
也错了,不知怎么写,指点一下

解决方案 »

  1.   

    declare @sql varchar(1000)
    set @sql='select * from tab_he where '+@kk+' like ''%'+@dian+'%'''
    exec @sql
      

  2.   

    谢谢,那怎么执行这个语句呀?
    Execute um_qing6 '名称','广州'
    出错提示:
    未能找到存储过程 'select * from tab_he where 名称 like '%广州%''。
      

  3.   

    --查询中字段也不固定的话就要用动态sql
    create proc um_qing2 @kk varchar(50),@dian varchar(50)
    as
    Set NoCount On
    declare @sql varchar(200)
    set @sql='select * from tab_he where ' + @kk + ' like ''%'' + @dian + ''%'''
    exec @sql
    Set NoCount Off
    --vb中代码
    Set rs1 = cn.Execute("um_qing2", "名称", "广州")
      

  4.   

    如果是:Set rs1 = cn.Execute("um_qing2", "名称", "广州"),错误提示:类型不匹配
    如果写成:
    Dim sql As String
    sql = "um_qing2 '名称', '广州'"
    Set rs1 = cn.Execute(sql)
    没找到存储过程'select * from tab_he where 名称 like '%'+@dian+'%''
      

  5.   

    CREATE PROC um_qing2
    @kk VARCHAR(50),
    @dian VARCHAR(50)
    AS
    SET NOCOUNT ON
    DECLARE @sql VARCHAR
    SET @sql='SELECT * FROM tab_he WHERE ' + @kk + ' LIKE ''%'' + @dian + ''%'''
    EXEC @sql
    SET NOCOUNT OFF
    VB:dim adoCmd as ADODB.Command
    dim adoRs as ADODB.Recordset
    set adoCmd=new ADODB.Command
    adoCmd.ConnectionString=connectionString
    adoCmd.CommandText="um_qing2";
    adoCmd.CommandType=adCmdStoredProc
    adoCmd.Parameters.Append adoCmd.CreateParameter("@KK",adVarChar,adParamInput,50,"名称")
    adoCmd.Parameters.Append adoCmd.CreateParameter("@DIAN",adVarChar,adParamInput,50,"广州")
    adoCmd.Prepared = True
    set adoRs=adoCmd.Execute
      

  6.   

    还是不行呀~!~
    SQL:
    create proc um_qing2 @kk varchar(50),@dian varchar(50)
    as
    Set NoCount On
    declare @sql varchar(200)
    set @sql='select * from tab_he where ' + @kk + ' like ''%'' + @dian + ''%'''
    exec @sql
    Set NoCount Offvb:
        Set rs2 = New ADODB.Recordset
        Set cmd = New ADODB.Command
        cmd.ActiveConnection = cn
        cmd.CommandText = "um_qing2"
        cmd.CommandType = adCmdStoredProc
        cmd.Parameters("@kk") = "名称"
        cmd.Parameters("@dian") = "广州"
        Set rs2 = cmd.Execute结果:没找到存储过程'select * from tab_he where 名称 like '%'+@dian+'%''
      

  7.   

    看看 select from tab_he where 名称 like '%广州%' 能不能在查询分析器里面成功执行先
      

  8.   

    select * from tab_he where 名称 like '%广州%'
    完全没问题~!这句有没有问题:
    set @sql='select * from tab_he where ' + @kk + ' like ''%'' + @dian + ''%'''
      

  9.   

    可以这样试试:create proc um_qing2 @kk varchar(50),@dian varchar(50)
    as
    Set NoCount On
    DECLARE @SQL NVARCHAR(4000)
    SET @SQL=N' SELECT * FROM tab_he WHERE ' + @kk + ' like %' + "'" + @dian + "%'"
    EXEC sp_executesql @SQL 
    Set NoCount Off
    go
      

  10.   

    上面一行有点问题,更正一下:
    SET @SQL=N' SELECT * FROM tab_he WHERE ' + @kk + ' like ' + "'%" + @dian + "%'"
      

  11.   

    那在VB里怎么写呢?提示找不到@kk
      

  12.   

    有时间在这UP不如看SQL联机帮助,快得多