oracle表:code_table 字段code varchar2类型,valuedef varchar2类型;
valuedef的值是一个函数'trunc(sys.dbms_random.value(1400,1500), 0)'
请问如何通过sql语句查询出valuedef对应函数执行结果。
我的想法是这样:
select (select valuedef from code_table where code='061-00') from dual;
但是得到的结果是trunc(sys.dbms_random.value(1400,1500), 0),并不是该函数执行的结果,
select trunc(sys.dbms_random.value(1400,1500), 0) from dual;就能得到函数结果。
有什么办法能用一个sql语句输出函数的结果。
------解决方案--------------------
我大致理解了,楼主的意思是valuedef字段的值为trunc(sys.dbms_random.value(1400,1500), 0),不是这个结果。
按照这个需求,那只能使用动态SQL语句了,数据多的话,用游标吧。这里我就拿一条数据做个示范:
CREATE TABLE CODE_TABLE
(CODE VARCHAR2(50),
VALUEDEF VARCHAR2(100)
);
INSERT INTO CODE_TABLE VALUES('061-00','TRUNC(SYS.DBMS_RANDOM.VALUE(1400,1500), 0)');
COMMIT;
DECLARE
vSQL VARCHAR2(1000);
vValuedef VARCHAR2(100);
vResult NUMBER;
BEGIN
SELECT VALUEDEF
INTO vValuedef
FROM CODE_TABLE
WHERE CODE = '061-00';
vSQL := 'SELECT '
------解决方案--------------------
vValuedef
------解决方案--------------------
' FROM DUAL';
EXECUTE IMMEDIATE vSQL INTO vResult;
DBMS_OUTPUT.PUT_LINE(vResult);
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN TOO_MANY_ROWS THEN
NULL;
END;