我写了一个存储过程,希望能在程序运行的时候,第一次检查有无该过程,没有的话就自动创建,但我没有例子,在网上也找不到答案.
我用的是vb.net代码,希望有人能帮帮忙
------解决方案--------------------
- SQL code
--用create or replace就可以了,不用检测存不存在create or replace procedure testisbegin dbms_output.put_line('test');end;/
------解决方案--------------------
感觉需求还是有些怪,可以用异常判断或者考虑楼上的方法判断存储过程是否已创建,若未创建,则参考一下代码创建:
- SQL code
CREATE OR REPLACE PROCEDURE pnew AS v_sql VARCHAR2(1000):='CREATE OR REPLACE PROCEDURE p01 ASBEGIN NULL;END p01;';BEGIN execute immediate v_sql;EXCEPTION WHEN OTHERS THEN raise_application_error(-20102,'** create procedure error **' ||sqlerrm);END pnew;
------解决方案--------------------
上面即是用pnew创建p01存储过程的简单逻辑,如果要用vb.net创建,表示无能为力..
------解决方案--------------------
如果想检查,select * from dba_procedures where product_name='...'
创建完了默认就编译了一次。或许你动态创建的是错误的。要不,你在plsql环境中编译一次,看看错误。
实在不行,动态创建完了还可以动态编译一次。
动态执行 alter procedure p_doexec compile;