2 edgar427 edgar427 于 2015.05.30 18:05 提问

oracle数据库存储过程带输入参数建表的语法和在oracle中调用语法

大神们,随便给几个例子参照一下啊,oracle数据库存储过程带输入参数建表的语法和在oracle中调用语法

4个回答

guwei4037
guwei4037   Ds   Rxr 2015.05.30 21:04
danielinbiti
danielinbiti   Ds   Rxr 2015.05.30 21:25
 create or replace procedure danielinbiti(tableName IN VARCHAR2)
authid current_user
is
  strSQL VARCHAR2(5000);
  vn_ctn number(2);
begin
   dbms_output.put_line('1');
  strSQL := 'CREATE TABLE '|| tableName;
  strSQL := strSQL || '(';
  strSQL := strSQL || ' testField  VARCHAR2(20) NOT NULL,';
  strSQL := strSQL || ' testField2 VARCHAR2(60) NOT NULL';
  strSQL := strSQL || ' )';
   dbms_output.put_line(strSQL);
   select count(*) into vn_ctn from user_all_tables a where a.table_name like upper(tableName);
   dbms_output.put_line(tableName);
   if vn_ctn > 0 then
      execute immediate 'drop table ' || tableName;
   end if;
   execute immediate strSQL;
end ;


调用 
call danielinbiti('testtable1')
zhouyangfan0827
zhouyangfan0827   2015.06.01 16:26

----------------------------建立存储过程:
CREATE OR REPLACE PROCEDURE P_name--存储过程名字
(
i_var in int, --输入参数1
o_var OUT varchar2 --输出参数1
)
IS
v_STR VARCHAR2(200); --定义存储过程内部的局部变量

BEGIN
--下面是存储过程的主体实现部分
v_STR := i_var;
dbms_output.put_line(v_STR);
o_var := v_STR;
exception--错误异常处理部分
when others then
dbms_output.put_line(sqlerrm);--打印错误信息
END P_name;

-----------------------------------调用存储过程示例:
declare
v_in int;
v_out varchar2(50);
begin
v_in :=100;
P_name (v_in,v_out); --调用存储过程P_name
dbms_output.put_line('存储过程输入结果为:'||v_out);
exception--错误异常处理部分
when others then
dbms_output.put_line(sqlerrm);--打印错误信息
end;

like052
like052   2015.06.02 10:06

楼上回答的都很好,可以专门百度下,存储过程里循环和游标用的应该比较多

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!