在SELECT INTO时,当FROM后面是一个本程序的变量,就编译不过。怎么解决呢?
这个变量是一个表名,在这之前我用一个表存储了某些我需要的表名,现在需要查询这些表,但FROM后面好像不可以加变量。。SELECT V_FEATURE_SRC
INTO V_SRC_VALUE
FROM V_CLASSIFIER_SRC
WHERE SERV_ID=V_KEY_CODE and stat_month=V_MONTH_NO AND region_id=V_LOCAL_CODE;
execute immediate v_sql;

解决方案 »

  1.   

    如果是外部变量,加:
    INTO :V_SRC_VALUE
      

  2.   

    改为动态执行sql,可以不呢?
    v_sql:='SELECT '||V_FEATURE_SRC||'
    INTO '||V_SRC_VALUE||'
    FROM '||V_CLASSIFIER_SRC||'
    WHERE SERV_ID='||V_KEY_CODE||' and stat_month='||V_MONTH_NO||' AND region_id='||V_LOCAL_CODE;
    execute immediate v_sql;
      

  3.   

    --使用动态SQL是可以的
    v_sql:='SELECT '||V_FEATURE_SRC||' FROM '||V_CLASSIFIER_SRC;
    v_sql:= v_sql||' WHERE SERV_ID='||V_KEY_CODE||' and stat_month=';
    v_sql:=v_sql||V_MONTH_NO||' AND region_id='||V_LOCAL_CODE;
    execute immediate v_sql into V_SRC_VALUE;