общие хранимые процедуры в оракуле - PullRequest
1 голос
/ 16 декабря 2009

Я хочу написать общую хранимую процедуру в Oracle. Например, я хочу взять имя таблицы в качестве входного, а затем выполнить операции над ней. Я хочу изучить некоторые примеры универсальных кодов и основы написания универсальных хранимых процедур в Oracle. Может ли кто-нибудь предоставить фрагменты кода / ссылки на веб-сайты или другой материал для этого?

Ответы [ 3 ]

5 голосов
/ 16 декабря 2009

Generic = динамический SQL, либо «Native Dynamic SQL» (Execute Immediate), либо пакет DBMS_SQL. http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_dynamic_sql.htm#i1006546

Обычно операторы SQL анализируются при компиляции процедуры, однако это невозможно, если имя таблицы неизвестно - таблица, конечно, может даже не существовать во время компиляции.

Вот ссылки на документацию по теме, с примерами.

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14261/dynamic.htm#LNPLS011

http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_dynamic_sql.htm#ADFNS008

Слово предостережения - не используйте динамический SQL, если вы можете использовать статический SQL. Гибкость имеет свою цену.

0 голосов
/ 16 декабря 2009

ВЫПОЛНИТЬ НЕМЕДЛЕННО делает то, что вы хотите.

0 голосов
/ 16 декабря 2009

Ну, вам наверняка понадобится оператор EXECUTE IMMEDIATE.

...