在PL/SQL过程中,我如何将表名作为参数传递?

3
CREATE PROCEDURE A(tab IN <table - what should I write here?>) AS
BEGIN
   INSERT INTO tab VALUES(123);
END A;

如何指定参数tab是一个表名?

1个回答

11

你不能直接传递一个数组给Oracle存储过程。相反,你需要将它作为VARCHAR2字符串传递,然后使用动态SQL。

CREATE PROCEDURE A(tab IN VARCHAR2) AS
BEGIN
   EXECUTE IMMEDIATE 'INSERT INTO ' || tab || 'VALUES(123)';
END A;

了解动态 SQL并注意如果不明智使用会带来的问题,例如性能、可扩展性和安全性方面的劣化。


请查看这个问题。谢谢! - Moeb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接