gpt4 book ai didi

sql - Oracle函数: How to pass a table name as parameter,并使用游标结果作为表名?

转载 作者:行者123 更新时间:2023-12-02 13:54:56 28 4
gpt4 key购买 nike

我需要有关我尝试创建的这个 oracle 函数的帮助。基本上我想要做的就是传入表的名称,并返回变量表名称 + '_ID' 列的最大值所以它看起来像这样 (tableName)_ID

这是我尝试过的(但我无法让它工作):

CREATE OR REPLACE FUNCTION RETURN_ID(tableName IN varchar2)
return int
IS
curResult varchar2;

cursor cur1 is
SELECT column_name
FROM all_tab_cols
WHERE table_name = tableName
AND column_name like '%_ID';

BEGIN

OPEN cur1;
FETCH cur1 INTO curResult;
CLOSE cur1;

SELECT MAX(curResult) AS MaxID
FROM tableName;

RETURN maxID;
END RETURN_ID;

最佳答案

替换

SELECT MAX(curResult) AS MaxID
FROM tableName;

execute immediate 
'select max(' || curResult || ')' ||
' from ' || tableName
into MaxID;

每当您想要在 select 语句中动态更改表名或列名时,除了立即执行语句之外,几乎没有其他方法。

关于sql - Oracle函数: How to pass a table name as parameter,并使用游标结果作为表名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22847162/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com