动态时能用SELECT INTO,
用ORDER BY 和 ROWNUM结合的时候,需要用子查询,因为语句是先取出前几个记录,然后再ORDER BY,
SELECT * FROM (SELECT * FROM TABLE ORDER BY COL1) WHERE ROWNUM=1;
把你的输出的WK_SQL仔细检查一下,看是不是没有空格什么的
用ORDER BY 和 ROWNUM结合的时候,需要用子查询,因为语句是先取出前几个记录,然后再ORDER BY,
SELECT * FROM (SELECT * FROM TABLE ORDER BY COL1) WHERE ROWNUM=1;
把你的输出的WK_SQL仔细检查一下,看是不是没有空格什么的
WK_KEIJO_YMD VARCHAR(8) := null;
WK_SQL VARCHAR2(5000) := NULL;
P_IF_TABLE_ID VARCHAR(30) := 'ZBTNV_H530';
BEGIN
WK_SQL := ' SELECT ';
WK_SQL := WK_SQL || ' KEIJO_YMD ';
WK_SQL := WK_SQL || ' FROM '||P_IF_TABLE_ID;
WK_SQL := WK_SQL || ' WHERE ROWNUM = 1 ';
WK_SQL := WK_SQL || ' ORDER BY KEIJO_YMD ';
DBMS_OUTPUT.PUT_LINE(WK_SQL);
EXECUTE IMMEDIATE WK_SQL into WK_KEIJO_YMD;
DBMS_OUTPUT.PUT_LINE(WK_KEIJO_YMD);
END;
2 WK_KEIJO_YMD VARCHAR(8) := null;
3 WK_SQL VARCHAR2(5000) := NULL;
4 P_IF_TABLE_ID VARCHAR(30) := 'cw_rjzb';
5 BEGIN
6 WK_SQL := ' SELECT ';
7 WK_SQL := WK_SQL || ' lsh ';
8 WK_SQL := WK_SQL || ' FROM '||P_IF_TABLE_ID;
9 WK_SQL := WK_SQL || ' WHERE ROWNUM = 1 ';
10 WK_SQL := WK_SQL || ' ORDER BY lsh ';
11 DBMS_OUTPUT.PUT_LINE(WK_SQL);
12 EXECUTE IMMEDIATE WK_SQL into WK_KEIJO_YMD;
13 DBMS_OUTPUT.PUT_LINE(WK_KEIJO_YMD);
14* END;
SQL> /
SELECT lsh FROM cw_rjzb WHERE ROWNUM = 1 ORDER BY lsh
27003PL/SQL procedure successfully completed.SQL> select lsh from cw_rjzb where rownum=1 order by lsh; LSH
---------
27003SQL>