declare
  fieldname varchar2(20);
begin
  execute immediate 'select ... where ' || fieldname || '=xxxx';
end;

解决方案 »

  1.   

    对不起,忘了赋值declare
      fieldname varchar2(20);
    begin
      fieldname := 'A1';
      execute immediate 'select ... where ' ¦¦ fieldname ¦¦ '=xxxx';
    end; 
      

  2.   

    to KingSunSha(弱水三千) :我用asp写程序,where ' ¦¦ fieldname ¦¦ '=xxxx';中||是何格式?
      

  3.   

    在sql server 中是这样的:
    您的表假设是这样的:
    create table mytable(col1 char(10) not null,col2 char(20))
    假设建立一个存储过程:
    create procedure sp_test @f_name varchar(40),@f_value varchar(20)--其中@f_name位字段名字,@f_value为对应的查询的字段值
    as
    declare @sql varchar(1024)
    select @sql='select col1,col2 from mytable where' +@f_name+' = ''''+@f_value+''''
    execute(@sql)
    go
      

  4.   


    可以采用case来完成。table t1( fd1 , fd2, fd3, fd4)
    declare @flag intset @flag =  //根据情况进行赋值
    select * 
    from t1
    where @变量值 = case @flag 
            when 1 then fd1
            when 2 then fd2
            when 3 then fd3
            when 4 then fd4
          end此方法可以使用两个参数,一个表示参数的性质,一个表示参数的值。
    @flag 表示地区、省份、城市
    @变量中存储 相应的具体的地区编号、省份编号、城市编号
      

  5.   

    好象不管用吧,我以前用PB就是想用变量去做字段名,害死我了,搞了半天还没有搞定
    我不知道在ORALCE里面不知道有没有
      

  6.   

    如果这个变量可以从其它表中select出来,就没必要写Procedure,太麻烦
      

  7.   

    select * from  tablename where colunmname='"& frm1.txt1.text&"'