请问如何用命令来运行Oracle带参数的存储过程

[复制链接]
查看11 | 回复9 | 2015-3-4 14:51:52 | 显示全部楼层 |阅读模式
PROC 开头like this
CREATE OR REPLACE PROCEDURE ETL.PROC_NAME(P_DATE IN VARCHAR2,P_O_RESULT OUT VARCHAR2)
...
这两个参数都有定义在body里面
我的通常做法是用TOAD FOR ORACLE 去Execute Procedure,按照向导来做,手工输入一个时间给P_DATE,PROC就会运行并成功结束
但是我想用命令的形式来CALL SP
譬如像SQL SERVER,exec sp_name; DB2 call ETL.PROC_NAME。。。
但是ORACLE 我不知道怎么写

回复

使用道具 举报

千问 | 2015-3-4 14:51:52 | 显示全部楼层
var x varchar(20)
回复

使用道具 举报

千问 | 2015-3-4 14:51:52 | 显示全部楼层
2F大哥,你写的是什么意思?
回复

使用道具 举报

千问 | 2015-3-4 14:51:52 | 显示全部楼层
执行匿名块:
DECLARE
X VARCHAR2(20);
BEGIN
ETL.PROC_NAME('20130101',X);
DBMS_OUTPUT.PUT_LINE(X);
END;
/

或者在SQLPLUS下声明 VAR X VARCHAR2(20);
EXEC ETL.PROC_NAME('20130101',:X);
PRINT X;

回复

使用道具 举报

千问 | 2015-3-4 14:51:52 | 显示全部楼层
谢谢二楼和三楼的人们。执行成功了
回复

使用道具 举报

千问 | 2015-3-4 14:51:52 | 显示全部楼层
var....
或者define...
或者匿名过程。。。
回复

使用道具 举报

千问 | 2015-3-4 14:51:52 | 显示全部楼层
还以为是从OS的命令行来执行存储过程呢
回复

使用道具 举报

千问 | 2015-3-4 14:51:52 | 显示全部楼层
lastwinner 发表于 2013-8-20 01:08
还以为是从OS的命令行来执行存储过程呢

也可以:
sqlplus xxx/xxx/@xxx <<!
DECLARE
X VARCHAR2(20);
BEGIN
ETL.PROC_NAME('20130101',X);
DBMS_OUTPUT.PUT_LINE(X);
END;
/
!
回复

使用道具 举报

千问 | 2015-3-4 14:51:52 | 显示全部楼层
一般都是
DECLARE
a varchar2(20);
b varchar2(20);
BEGIN
過程名(參數a,參數b);
END;
回复

使用道具 举报

千问 | 2015-3-4 14:51:52 | 显示全部楼层
yulihua49 发表于 2013-8-22 12:54
也可以:
sqlplus xxx/xxx/@xxx

用here doc是可以,不过比较麻烦一点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行