CREATE OR REPLACE PROCEDURE CALCULATION(TABLES_NAME IN VARCHAR,
MIN_SUPPORT IN NUMBER,
RTN_ID OUT NUMBER,
RTN_STR OUT VARCHAR2) 像上面的这个存储过程用dos怎么调用?急,没有时间研究了,要能运行的代码。结果输出到txt,还需要dos调用这个txt的语句
MIN_SUPPORT IN NUMBER,
RTN_ID OUT NUMBER,
RTN_STR OUT VARCHAR2) 像上面的这个存储过程用dos怎么调用?急,没有时间研究了,要能运行的代码。结果输出到txt,还需要dos调用这个txt的语句
已经连上了。
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;2、然后建立一个批处理命令文件,call.bat(与call.sql放在同一地方),内容如下(其中用户名、密码、
连接串根据你存储过程所在用户):
sqlplus 用户名/密码@连接串 @call.sql3、在命令行下执行批处理
C:\>call.bat
--调用存储过程
*
第 9 行出现错误:
ORA-06550: 第 8 行, 第 17 列:
PLS-00103: 出现符号 "NUMBER"在需要下列之一时:
:= . ( @ %
;
符号 "." 被替换为 "NUMBER" 后继续。修改了一下你给的代码,呵呵,我不太会改,改下来还是运行不了。set linesize 120
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
set termout off
set pagesize 500
set trimspool on
set serveroutput on
set feedback off
spool 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 := 20; --不知道是什么意思,随便赋一值
--调用存储过程
calculation(tables_name => v_TABLES_NAME,
min_support => v_MIN_SUPPORT ,
rtn_id => v_RTN_ID,
rtn_str => v_RTN_STR); --取得输出结果变量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;
改成这样调用
这种方法也行,但是方法名写成小写的。