适合我这种初学数据库菜鸟的存储过程的创建和调用详细过程

数据库初学者指南:存储过程创建与调用
本文适合数据库初学者,介绍了如何创建和调用存储过程,特别是带参数的存储过程。通过示例代码,详细讲解了创建存储过程的步骤,包括声明变量、代码执行区和结束执行区,并提醒在调用时注意参数的单引号。

初学数据库,相信大家跟我这个菜鸟一样,对“存储过程”这种此物只应天上有的东西,应该是有点望洋兴叹、望而生畏了,不过大家别怕,俗话说的好,不怕你不会,就怕就不学,让咱们一起学习一下吧!

因为工作中涉及到了参数模式的存储过程,所以就说这一块吧,不过我到现在也没搞明白,带参和不带参有啥具体区别,还望大家相互帮助,可以留言讨论。

首先创建一个需要传入表名的存储过程,代码如下

create or replace procedure table_test(table_name in varchar2)
 is
        str_test varchar2(10000);
 begin
        str_test := 'insert into '||table_name||'(key_id) values(1)';
        dbms_output.put_line(str_test);
        execute immediate str_test;
 end;

其中table_name为传入的表名

刚开始的时候是这么写的

create or replace procedure table_test(table_name in varchar2)
 is
        --str_test varchar2(10000);
 begin
        --str_test := 'insert into '||table_name||'(key_id) values(1)';
        --dbms_output.put_line(str_test);
        --execute immediate str_test;

        select * from table_name;
 end;

这样写就会报错了,目测是存储过程不直接识别sql语句,需调用execute 函数执行才可以。

正确的就是第一次写的代码了

所以,创建存储过程,简单来说有这么几步,和我一样的菜鸟朋友们可以这么来做

一、创建存储过程

1.创建一个存储过程

    create or replace procedure table_test(table_name in varchar2)(不要加分号)

过程名为table_test,参数名为table_name,类型为varchar2,in关键字不要忘了。

2.声明变量

 is (不要加分号)
        str_test varchar2(10000);(记得加分号)

变量名为str_test, 类型为varchar2,长度为10000;

注:不同于c中变量的声明,此处需要先写变量名,再写类型,c中是先写类型,再写变量名。

3.代码执行区

begin(没有分号)
        str_test := 'insert into '||table_name||'(key_id) values(1)';(给str_test变量赋值,一句结束,加分号)
        dbms_output.put_line(str_test);(输出str_test的内容,可通过输出的内容判断,参数名是否传正确)
        execute immediate str_test;(执行sql语句串)

注:str_test := 'insert into '||table_name||'(key_id) values(1)'; 估计一开始可能会被'||table_name||'这个折磨的死去活来,后来同事一说才发现,原来这是拼接参数table_name的,首先是这一串'insert into ',然后是利用拼接符||拼接参数table_name,然后再用||拼接剩下的sql串'(key_id) values(1)',此处大家一定要小心。

4.结束执行区(求解释是结束的执行区还是整个存储过程,自己感觉结束的是执行区,和begin对应)

end;(有分号)
 好啦,存储过程建好了,下面就得调用了,

二、调用存储过程

执行call table_test('account');

这里大家要注意了,因为table_test(table_name)参数table_name是verchar2类型,所以实参一定要加单引号,切记!!!!!!

好了,基本就这样,有问题大家可以留言讨论。这是最基本的,如果以后研究的多了,再贴上来跟大家分享。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值