需要通过添加一列来改变表,我们如何编写正确的语法来改变包内的表?它可以是过程或函数?
我尝试使用过程并得到此错误
CREATE OR REPLACE PACKAGE BODY temp IS
PROCEDURE prc_proc_add_column(
table_name IN user_tab_columns.TABLE_NAME%TYPE,
p_return OUT NUMBER,
p_message OUT VARCHAR2
) IS
BEGIN
EXECUTE IMMEDIATE 'ALTER TABLE table_name ADD col_name NUMBER';
p_return := 0;
p_message := 'Succesful';
EXCEPTION WHEN OTHERS THEN p_return := SQLCODE;
p_message := SQLERRM;
END prc_proc_add_column;
然后得到这个错误:-
PLS-00103: Encountered the symbol "end-of-file" when expecting one of
the following: begin end function pragma procedure
1条答案
按热度按时间liwlm1x91#
Barbaros已经评论了你发布的代码的错误,就语法而言。
当然,您可以这样做,但是-一般来说-动态地修改数据模型并不是最好的主意。
当您在这里时,为什么不修改代码,以便不仅可以提供表名,还可以提供列名及其数据类型呢?
请注意,当在DDL语句上使用动态SQL时,必须将名称连接到语句中;你不能使用绑定变量(不是你做的那样…),而且--一般来说--如果你注意可能的SQL注入,这不会有什么坏处。
举个例子
Package 规格:
包体:
测试: