CREATE OR REPLACE PROCEDURE CALCULATION(TABLES_NAME IN VARCHAR,
                                          MIN_SUPPORT IN NUMBER, 
                                          RTN_ID      OUT NUMBER,
                                          RTN_STR     OUT VARCHAR2) 像上面的这个存储过程用dos怎么调用?急,没有时间研究了,要能运行的代码。

解决方案 »

  1.   

    输出结果数据DOS下如何处理?
      

  2.   

    描述清楚,你的目的是什么,完成什么功能?
    如果只是简单执行一下是没有问题的。
    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
      

  3.   

    如果要将调用后的变量结果存入文件,把call.sql写成这样
    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;
      

  4.   

    --挖掘字段间强关联规则
    CREATE OR REPLACE PROCEDURE CALCULATION(TABLES_NAME IN VARCHAR,--待分析表
      MIN_SUPPORT IN NUMBER, --设定最小支持度
      RTN_ID OUT NUMBER,--返回错误编码
      RTN_STR OUT VARCHAR2) --返回错误表述
      

  5.   

    按照4楼的代码运行,有错误提示:  --调用存储过程
                  *
    第 9 行出现错误:
    ORA-06550: 第 8 行, 第 17 列:
    PLS-00103: 出现符号 "NUMBER"在需要下列之一时:
    := . ( @ %
    ;
    符号 "." 被替换为 "NUMBER" 后继续。
      

  6.   

    修改了一下你给的代码,呵呵,我不太会改,改下来还是运行不了。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
      

  7.   

    CALCULATION
    你当前用户下有这个存储过程吗?