写存储过程的时候往往想查一个表,然后从表中取出一个结果当作变量来用,但是表名需要拼接,只能写到v_sql字符串里然后再用EXECUTE IMMEDIATE 执行。可以用
EXECUTE IMMEDIATE v_sql INTO 变量 来获取想要的值
v_sql := 'SELECT MAX(REDODATE)
FROM (SELECT DISTINCT T.REDODATEFROM ' || TABLE_HEAD || 'FIN_DIFMID T
WHERE t.datatime = '''|| V_DDT ||'''
AND t.redodate < ''' || redomonth || '''
ORDER BY T.REDODATE DESC)
WHERE ROWNUM = 1';
EXECUTE IMMEDIATE v_sql INTO v_redomonth;