我用PLSQL写了个存储过程,然后怎么执行那?我放在test窗口里执行,没有反应啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用PLSQL写了个存储过程,然后怎么执行那?我放在test窗口里执行,没有反应啊相关的知识,希望对你有一定的参考价值。

create or replace procedure test
(i_test IN integer,
o_test OUT varchar(20)
)
AS
temp varchar(20);
begin
select name
into temp
from person
where id=i_test;
o_test:=temp;
end test;

create or replace procedure test
(i_test  IN integer,
o_test OUT varchar(20)
)
AS
temp varchar(20);
begin
  select name
    into temp
    from person
   where id=i_test;
  end test;

应该是这样的  赋的值是你输入的值,不是输出的值,你在test里面可以输入id 然后你需要的名字就出来了。也可以在command里面运行,以/为结束符,然后进行测试,测试的时候要给o_test定义一个变量

两种方式都是可以的

参考技术A

你这个是  创建或更新  存储过程的代码呀


执行就简单的


BEGIN

   存储过程名字( 参数 );

END;

/


就可以了。


例如:

SQL> CREATE OR REPLACE PROCEDURE HelloWorld1 (
  2    p_user_name  VARCHAR2
  3  ) AS
  4  BEGIN
  5     dbms_output.put_line('Hello ' || p_user_name || '!');
  6  END HelloWorld1;
  7  /

Procedure created.

SQL>
SQL>
SQL> BEGIN
  2    HelloWorld1('Edward');
  3  END;
  4  /
Hello Edward!

PL/SQL procedure successfully completed.

参考技术B 把AS换成IS试试

SQL Server 里需要定时执行某个存储过程,存储过程怎么写?

SQL Server 里需要定时执行某个存储过程,存储过程怎么写?

数据库:test
表名:biao

id money1 time money2 money3 money4
1 600 2010-1-10 100
2 1200 2010-1-12 200

存储过程是:if DateDiff("d",time,now)<=30 and DateDiff("d",time,now)>0
money3 = money1*0.3
if DateDiff("d",time,now)<=60 and DateDiff("d",time,now)>30
money3 = money1*0.6
if DateDiff("d",time,now)<=365 and DateDiff("d",time,now)>60
money3 = money1*0.9
if DateDiff("d",time,now)>365
money3 = money1

if DateDiff("d",time,now)<=30 and DateDiff("d",time,now)>0
money4 = money1*0.3-money2
if DateDiff("d",time,now)<=60 and DateDiff("d",time,now)>30
money4 = money1*0.6-money2
if DateDiff("d",time,now)<=365 and DateDiff("d",time,now)>60
money4 = money1*0.9-money2
if DateDiff("d",time,now)>365
money4 = money1-money2

时间是每天的01:00执行一次
存储过程的SQL怎么写???

create
procedure
pro_test
as
declare
@time
datetime,
@id
int,
@difftime
int
declare
cursor_time
cursor
for
select
id,time
from
test_table
-----(your
table_name)
open
cursor_time
fetch
cursor_time
into
@id,@time
begin
while
@@fetch_status=0
begin
select
@difftime=DateDiff(dd,@time,getdate())
if
@difftime>0
and
@difftime<=30
begin
update
test_table
set
money3
=
money1*0.3,money4
=
(money1*0.3-money2)
where
id=@id
end
if
@difftime>30
and
@difftime<=60
begin
update
test_table
set
money3
=
money1*0.6,money4
=
(money1*0.6-money2)
where
id=@id
end
if
@difftime>60
and
@difftime<=365
begin
update
test_table
set
money3
=
money1*0.9,
money4
=
(money1*0.9-money2)
where
id=@id
end
if
@difftime>365
begin
update
test_table
set
money3
=
money1
,money4
=
(money1-money2)
where
id=@id
end
end
end
把存储过程里的表明改成你的table
创建好这个存储过程后,然后在企业管理器里,展开“管理”-“sql
server
代理”-“作业”
新建一个作业。
在“步骤”里选择你要执行的库,然后
在代码栏写上‘exec
pro_test’,“调度”里设置下时间,就可以了。
不明白的地方hi我。
参考技术A create procedure pro_test
as
declare @time datetime,
@id int,
@difftime int
declare cursor_time cursor for select id,time from test_table -----(your table_name)
open cursor_time
fetch cursor_time into @id,@time

begin
while @@fetch_status=0
begin
select @difftime=DateDiff(dd,@time,getdate())
if @difftime>0 and @difftime<=30 begin
update test_table set money3 = money1*0.3,money4 = (money1*0.3-money2) where id=@id
end
if @difftime>30 and @difftime<=60 begin
update test_table set money3 = money1*0.6,money4 = (money1*0.6-money2) where id=@id
end
if @difftime>60 and @difftime<=365 begin
update test_table set money3 = money1*0.9, money4 = (money1*0.9-money2) where id=@id
end
if @difftime>365 begin
update test_table set money3 = money1 ,money4 = (money1-money2) where id=@id
end
end
end

把存储过程里的表明改成你的table
创建好这个存储过程后,然后在企业管理器里,展开“管理”-“sql server 代理”-“作业” 新建一个作业。
在“步骤”里选择你要执行的库,然后 在代码栏写上‘exec pro_test’,“调度”里设置下时间,就可以了。

不明白的地方hi我。
参考技术B 1、管理->SQL Server代理->作业(按鼠标右键)->新建作业->
2、新建作业属性(常规)->名称[自定义本次作业的名称]->启用的方框内是勾号->
分类处可选择也可用默认的[未分类(本地)]->所有者默认为登录SQL Server用户[也可选其它的登录]->描述[填写本次工作详细描述内容];[ 创建作业分类的步骤:SQL Server代理->作业->右键选所有任务->添加、修改、删除 ]
3、新建作业属性(步骤)->新建->步骤名[自定义第一步骤名称]->类型[Transact-SQL(TSQL)脚本]->数据库[要操作的数据库]->命令[ 如果是简单的SQL直接写进去即可,也可用打开按钮输入一个已写好的*.sql文件如果要执行存储过程,填exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN]]->确定(如果有多个步骤,可以再次调用下面的新建按钮;也可以对已有的多个步骤插入、编辑、删除);
4、建作业属性(调度)->新建调度->名称[自定义调度名称]->启用的方框内是勾号->调度->反复出现->更改[调度时间表]->确定(如果只要保存此作业,不要定时做可以把启用的方框内是勾号去掉);
5、建作业属性(通知)->用默认的通知方法就好[当作业失败时,写入Windows应用程序系统日志] ->确定。
参考技术C 在sql管理器中,打开sqlserver代理,选择作业,--》新增作业。
根据步骤,输入执行脚本,设置执行间隔时间等,启用就可以了
参考技术D 可以用windows自带的任务执行计划,在附件-系统工具中。

以上是关于我用PLSQL写了个存储过程,然后怎么执行那?我放在test窗口里执行,没有反应啊的主要内容,如果未能解决你的问题,请参考以下文章

plsql中如何执行存储过程?

在PLSQL中,存储过程的输出参数最大支持多大

简单的sql存储过程编写 谢~

PLSQL执行存储过程提示ORA-01008

我用JAVA写了个程序,怎么把它变成在Windows下运行的小软件?《详细点》

MySQL存储过程显示出一条sql执行用时?