你 SELECT 之后干吗要加个单引号? 你这样写的话 会把这个字段当成
一个固定字符串 
sql_stat:=' select fieldstr  from FROM CW_XMZM A 
            WHERE   FXMDM=:1 
              AND   FKMDM=:2
              AND   FYEAR2=2002 ';
EXECUTE IMMEDIATE sql_stat  using '000001','102' into curyetemp;
你在试试吧

解决方案 »

  1.   

    EXECUTE IMMEDIATE sql_stat   into curyetemp using '000001','102';
    另外注意异常。
    选出记录大于1,或者没有数据
      

  2.   

    另外可以
    delcare 
      sql_stat varchar(200);
      str varchar(100);
    begin
    sql_stat:=' select fieldstr  from FROM CW_XMZM A  into :1
                WHERE   FXMDM=:2 
                  AND   FKMDM=:3
                  AND   FYEAR2=2002 ';
    EXECUTE IMMEDIATE sql_stat using out str, '000001','102';
    end;
      

  3.   

    上面写错了一点:
    delcare 
      sql_stat varchar(200);
      str varchar(100);
    begin
    sql_stat:=' select fieldstr into :1  from FROM CW_XMZM A
                WHERE   FXMDM=:2 
                  AND   FKMDM=:3
                  AND   FYEAR2=2002 ';
    EXECUTE IMMEDIATE sql_stat using out str, '000001','102';
    end;
      

  4.   

    楼上的, 
    不对啊, 我用以下的句子
     sql_stat :='select A.FM2.CurYE into :1 FROM CW_XMZM A  WHERE FXMDM=:2 AND FKMDM=:3 AND FYEAR2=2002 ';
    EXECUTE IMMEDIATE sql_stat  using  out curyetemp,'000001','102';
    说一个无效的主机/赋值变量名:
      怎么搞的呢?
      

  5.   

    sql_stat:=' select fieldstr  from FROM CW_XMZM A 
                WHERE   FXMDM=:1 
                  AND   FKMDM=:2
                  AND   FYEAR2=2002 ';
    EXECUTE IMMEDIATE sql_stat into curyetemp using '000001','102' ;
      

  6.   

    sorry,zgkkgz(凡人) 
    我说的第二种方式应该:
     sql_stat :='begin 
        select A.FM2.CurYE into :1 FROM CW_XMZM A  WHERE FXMDM=:2 AND FKMDM=:3 AND FYEAR2=2002; 
    end ';
    EXECUTE IMMEDIATE sql_stat  using  out curyetemp,'000001','102';sql_stat需要是begin..end的块。