我想将Tablename设置为Variable
为什么:我通过数据库链接从oracle数据库转到mysql数据库,在mysql数据库中我有一些表名,其中包含日期示例:data_20121126
这是我的陈述:
DECLARE
tbname VARCHAR2 (200);
BEGIN
SELECT ab.teste
INTO tbname
FROM (SELECT '"data_'
|| REPLACE (TO_CHAR (SYSDATE - 1, 'yyyy.mm.dd'),
'.',
'')
|| '"@myDB'
AS teste
FROM DUAL) ab;
SELECT * FROM tbname;
END;
有人能帮帮我吗?
提前致谢
答案 0 :(得分:2)
静态SQL是不可能的(我怀疑在MySQL数据库中每天创建一个新表是一种明智的设计方法)。
如果你真的需要这样做,你可以
答案 1 :(得分:0)
如果不使用动态SQL,就无法做到这一点:
DECLARE
tbname VARCHAR2 (200) := '"data_'
|| TO_CHAR (SYSDATE - 1, 'yyyymmdd')
|| '"@myDB';
vMyVariable varchar2(10);
BEGIN
execute immediate "SELECT MyColumn
FROM " || tbname into vMyVariable ;
END;
当然,此版本假设您将从单个字段返回单个列到变量。很可能,你真的想要将一个引用光标返回给你的调用应用程序。