dos调用存储过程

adanya 2011-05-31 08:56:39
CREATE OR REPLACE PROCEDURE CALCULATION(TABLES_NAME IN VARCHAR,
MIN_SUPPORT IN NUMBER,
RTN_ID OUT NUMBER,
RTN_STR OUT VARCHAR2)

像上面的这个存储过程用dos怎么调用?急,没有时间研究了,要能运行的代码。
...全文
164 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangren 2011-06-01
  • 打赏
  • 举报
回复
如果要将调用后的变量结果存入文件,把call.sql写成这样
set linesize 120
set termout off
set pagesize 500
set trimspool on
set serveroutput on
set feedback off

spool d:\result.txt

DECLARE
v_TABLES_NAME VARCHAR2(30); --声明一个变量,作为入参
v_MIN_SUPPORT NUMBER; --声明一个变量,作为入参
v_RTN_ID NUMBER; --声明一个变量,作为保存结果
v_RTN_STR VARCHAR2(50); --声明一个变量,作为保存结果
BEGIN
v_TABLES_NAME := 'emp'; --根据你的需要赋一个表名
v_MIN_SUPPORT NUMBER := 20; --不知道是什么意思,随便赋一值
--调用存储过程
CALCULATION(v_TABLES_NAME, v_MIN_SUPPORT, v_RTN_ID, v_RTN_STR);
--取得输出结果变量v_RTN_ID,v_RTN_STR按你的要求处理
--将输出变量打印到屏幕上,由spool存储到result.txt文件中
dbms_output.put_line('RTN_ID='||RTN_ID||','||'RTN_STR='||RTN_STR);
END;
/

spool off;
exit;
tangren 2011-06-01
  • 打赏
  • 举报
回复
CALCULATION
你当前用户下有这个存储过程吗?
adanya 2011-06-01
  • 打赏
  • 举报
回复
修改了一下你给的代码,呵呵,我不太会改,改下来还是运行不了。

set linesize 120
set termout off
set pagesize 500
set trimspool on
set serveroutput on
set feedback off

spool result.txt

DECLARE
v_TABLES_NAME VARCHAR2(30); --声明一个变量,作为入参
v_MIN_SUPPORT NUMBER; --声明一个变量,作为入参
v_RTN_ID NUMBER; --声明一个变量,作为保存结果
v_RTN_STR VARCHAR2(50); --声明一个变量,作为保存结果
BEGIN
v_TABLES_NAME := 'ANALYSIS_DATE';
v_MIN_SUPPORT := 100; --修改
CALCULATION(v_TABLES_NAME, v_MIN_SUPPORT, v_RTN_ID, v_RTN_STR);

--将输出变量打印到屏幕上,由spool存储到result.txt文件中
dbms_output.put_line('RTN_ID='||v_RTN_ID||','||'RTN_STR='||v_RTN_STR);--修改
END;
/

spool off;
exit;

CALCULATION(v_TABLES_NAME, v_MIN_SUPPORT, v_RTN_ID, v_RTN_STR);
*
第 9 行出现错误:
ORA-06550: 第 9 行, 第 3 列:
PLS-00201: 必须声明标识符 'CALCULATION'
ORA-06550: 第 9 行, 第 3 列:
PL/SQL: Statement ignored
adanya 2011-06-01
  • 打赏
  • 举报
回复
按照4楼的代码运行,有错误提示:

--调用存储过程
*
第 9 行出现错误:
ORA-06550: 第 8 行, 第 17 列:
PLS-00103: 出现符号 "NUMBER"在需要下列之一时:
:= . ( @ %
;
符号 "." 被替换为 "NUMBER" 后继续。
adanya 2011-06-01
  • 打赏
  • 举报
回复
--挖掘字段间强关联规则
CREATE OR REPLACE PROCEDURE CALCULATION(TABLES_NAME IN VARCHAR,--待分析表
MIN_SUPPORT IN NUMBER, --设定最小支持度
RTN_ID OUT NUMBER,--返回错误编码
RTN_STR OUT VARCHAR2) --返回错误表述
tangren 2011-05-31
  • 打赏
  • 举报
回复
描述清楚,你的目的是什么,完成什么功能?
如果只是简单执行一下是没有问题的。
DOS下可以直接批处理调用SQL脚本,
输入参数TABLES_NAME,MIN_SUPPORT 输入什么数据
输出参数RTN_ID ,RTN_STR拿来干什么?别人怎么猜?

给个例子吧,
1、建立一个SQL文件,如call.sql,内容如下:
DECLARE
v_TABLES_NAME VARCHAR2(30); --声明一个变量,作为入参
v_MIN_SUPPORT NUMBER; --声明一个变量,作为入参
v_RTN_ID NUMBER; --声明一个变量,作为保存结果
v_RTN_STR VARCHAR2(50); --声明一个变量,作为保存结果
BEGIN
v_TABLES_NAME := 'emp'; --根据你的需要赋一个表名
v_MIN_SUPPORT NUMBER := 20; --不知道是什么意思,随便赋一值
--调用存储过程
CALCULATION(v_TABLES_NAME, v_MIN_SUPPORT, v_RTN_ID, v_RTN_STR);
--取得输出结果变量v_RTN_ID,v_RTN_STR按你的要求处理
END;
/

exit;

2、然后建立一个批处理命令文件,call.bat(与call.sql放在同一地方),内容如下(其中用户名、密码、
连接串根据你存储过程所在用户):
sqlplus 用户名/密码@连接串 @call.sql

3、在命令行下执行批处理
C:\>call.bat

adanya 2011-05-31
  • 打赏
  • 举报
回复
输出到txt文件
tangren 2011-05-31
  • 打赏
  • 举报
回复
输出结果数据DOS下如何处理?

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧