dfkt.net
当前位置:首页 >> 我创建了一个存储过程 sp_xxx ,在plsql DEv中执行如下操作: >>

我创建了一个存储过程 sp_xxx ,在plsql DEv中执行如下操作:

beginsp_xxx('123');commit;execute immediate 'drop procedure sp_xxx';end;

create or replace procedure job_table as v_sql varchar2(2000); begin v_sql:='create table job_test2 as select * from job_test'; EXECUTE immediate v_sql; EXCEPTION WHEN OTHERS THEN rollback; end job_table; 存储过程内不能直接使用create或alter,需要使用EXECUTE执行动态语句才可以 还有执行存储过程,必须在命令窗口内执行

过程没有创建成功,语句有问题,首先select *可能导致多值,得用游标其次过程语句与一般sql语句不同,以SELECT XX INTO XX from XX形式,你都没有into语句,这句话本身就有问题.

把AS换成IS试试

菜单【文件】-》【新建】--》【程序窗口】--》procedure,就可以了,写完存储过程执行下就可以在存储过程下看到它了

执行方法begin 存储过程名(参数1,参数2);--参数间用逗号隔开,字符型的要加单引号,数字型的直接输入,结尾带分号end;--结尾带分号

create proc showStudentInfo @Name varchar(10) if(select Num from Student where Name=@Name);根据姓名查学号,若果有:select * from student where Name=@Name else print '没有该学生的信息' go

select count(1) from ALL_TABLES where owner='BLUESKY' and table_name='HO_DEPT_MONTHHOURS'; 用这条SQL去查找table,如果有就执行insert,没有就做create table的操作.create table的SQL用动态SQL去执行就可以了.

两种方式:1、在sql窗口执行:begin sp_executesql;end;2、在命令窗口执行:exec sp_executesql;

create procedure price_proc @count int output,@avg_price money output,@type char(12)='ip' as begin select @count=count(*),@avg_price=avg(price) from titles where type=@type end-- Go-- declare @count int ,@avg_price money execute price_proc @count,@avg_price,'ip' select @count,@avg_price GO

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.dfkt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com