CREATE OR REPLACE PROCEDURE CALCULATION(TABLES_NAME IN VARCHAR,
MIN_SUPPORT IN NUMBER,
RTN_ID OUT NUMBER,
RTN_STR OUT VARCHAR2) 像上面的这个存储过程用dos怎么调用?急,没有时间研究了,要能运行的代码。
MIN_SUPPORT IN NUMBER,
RTN_ID OUT NUMBER,
RTN_STR OUT VARCHAR2) 像上面的这个存储过程用dos怎么调用?急,没有时间研究了,要能运行的代码。
如果只是简单执行一下是没有问题的。
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.sql3、在命令行下执行批处理
C:\>call.bat
set linesize 120
set termout off
set pagesize 500
set trimspool on
set serveroutput on
set feedback offspool d:\result.txtDECLARE
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;
CREATE OR REPLACE PROCEDURE CALCULATION(TABLES_NAME IN VARCHAR,--待分析表
MIN_SUPPORT IN NUMBER, --设定最小支持度
RTN_ID OUT NUMBER,--返回错误编码
RTN_STR OUT VARCHAR2) --返回错误表述
*
第 9 行出现错误:
ORA-06550: 第 8 行, 第 17 列:
PLS-00103: 出现符号 "NUMBER"在需要下列之一时:
:= . ( @ %
;
符号 "." 被替换为 "NUMBER" 后继续。
set termout off
set pagesize 500
set trimspool on
set serveroutput on
set feedback offspool result.txtDECLARE
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
你当前用户下有这个存储过程吗?