我得到了以下程序:
create or replace PROCEDURE create_indexes
(tbl_name_index IN VARCHAR2,
tbl_name_vehicle IN VARCHAR2,
tbl_name_dealer IN VARCHAR2,
tbl_name_hst IN VARCHAR2,
tbl_name_dms IN VARCHAR2,
tbl_name_usertype IN VARCHAR2,
tbl_name_search IN VARCHAR2) as
COUNT_INDEXES INTEGER;
BEGIN
SELECT COUNT(*)
INTO COUNT_INDEXES
FROM USER_INDEXES
WHERE table_name = tbl_name_index and index_name not like '%UNIQUE%';
IF COUNT_INDEXES <= 0 THEN
EXECUTE IMMEDIATE 'COMMAND';
end If;
end;
正如您所看到的,定义了几个参数。我的问题是,如何使用多个输入执行此过程?
从 SQL 工作表中,调用您的过程匿名块 http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/overview.htm#sthref258:
begin
create_indexes (
tbl_name_index => 'TABLE_NAME',
tbl_name_vehicle => 'Vehicle name',
tbl_name_dealer => 'value 3',
tbl_name_hst => 'value 4',
tbl_name_dms => 'value 5',
tbl_name_usertype => 'value 6',
tbl_name_search => 'value 7');
end;
/
正如 Jeffrey Kemp 所指出的,最好使用命名参数表示法,而不是位置表示法;它使它更清晰,有助于避免错误(特别是参数的顺序错误),可以减少未来更改对过程的影响,并且当您有带有默认值的参数时更加灵活 - 因此您可以跳过任何您不知道的参数想要明确设置。
您还可以使用execute command http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve022.htm作为一种捷径,但由于有很多参数,坚持匿名块可能更容易 - 无论如何,它在幕后都是一样的。许多 SQL*Plus 文档也适用于 SQL Developer。
SQL 开发人员文档还向您展示如何执行和调试过程 http://docs.oracle.com/cd/E12151_01/doc.150/e12152/intro.htm#sthref172.
如果这是您第一次涉足 PL/SQL,那么可能值得回顾一下文档 http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/overview.htm。我不确定你要使用你所显示的代码去哪里;似乎有点困惑。在 PL/SQL 中创建索引之类的对象是不常见的,因为它们应该在创建或更新模式时构建一次,因此将其作为可重用代码似乎有点毫无意义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)