0

目标: 我有一个程序,我想在 Toad 的 SQL 窗口中调用它来查看它正在提取的数据,但是我遇到了如何处理它的问题,并且想知道语法应该是什么样子.

规格:

我有一个程序需要 IN 三个 var,OUTs 三个 var。为简单起见,名称和类型如下:

var1 VARCHAR2
var2 VARCHAR2
var3 NUMBER(长度:22)
var4 PL/SQL TABLE(长度:22)
var5 PL/SQL TABLE(长度:22)
var6 PL/SQL TABLE(长度:22)

在 SQL 窗口中,我有以下内容:

DECLARE
paramOut4 TABLE("22");
paramOut5 TABLE("22");
paramOut6 TABLE("22");
BEGIN
SOME_SCHEMA.SOME_PROCEDURE('someString', 4, 2, paramOut4, paramOut5, paramOut6);
END;

这给了我错误:

ORA-06550:第 2 行,第 21 列:PLS-00103:在预期以下情况之一时遇到符号“)”:

一个标识符 一个双引号分隔标识符 LONG_
double ref char 时间时间戳 间隔日期 二进制国家
字符 nchar 符号“一个标识符”被替换为“)”以继续。ORA-06550:第 3 行,第 21 列:PLS-00103:在预期以下情况之一时遇到符号“)”:

一个标识符 一个双引号分隔标识符 LONG_
double ref char 时间时间戳 间隔日期 二进制国家
字符 nchar 符号“一个 ORA-06550:第 4 行,第 21 列:PLS-00103:遇到符号“)”下列的:

标识符 双引号分隔标识符 LONG_
double ref char 时间时间戳 间隔日期 二进制国家
字符 nchar 符号“an

即使它应该是一个数字而不是表长度的字符串,我添加了双引号,因为没有它们它会抱怨:

ORA-06550:第 2 行,第 17 列:PLS-00103:在预期以下情况之一时遇到符号“22”:

pragma 标识符 双引号分隔标识符 当前

而且我在那里有paren,因为当我刚有“TABLE”时它抱怨:

发生以下错误:

ORA-06550:第 2 行,第 16 列:PLS-00103:遇到符号“;” 当期待以下之一时:

(

4

1 回答 1

1

您必须在声明变量之前定义表类型。例如,您可以定义一个名为 t_table 的类型来声明数字数组的变量:

DECLARE
  TYPE t_table IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
  var4 t_table;
  var5 t_table;
  var6 t_table;
BEGIN
  SOME_SCHEMA.SOME_PROCEDURE('someString', 4, 2, paramOut4, paramOut5, paramOut6);
END;
于 2013-05-30T09:49:56.227 回答