在TOAD IV SQL窗口中调用过程时出现语法错误/问题w / Out变量

时间:2013-05-29 21:09:01

标签: sql stored-procedures syntax plsql toad

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

具体细节:

我有一个程序,它接受三个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 time timestamp interval date binary binary
  character nchar符号“an identifier”替换为“)”   接着说。 ORA-06550:第3行,第21栏:PLS-00103:遇到了   符号“)”当期待下列之一时:

     

标识符是双引号分隔标识符LONG_
  double ref char time timestamp interval date binary binary
  character nchar符号“ORA-06550:第4行,第21列:   PLS-00103:当期待其中一个时遇到符号“)”   以下内容:

     

标识符是双引号分隔标识符LONG_
  double ref char time timestamp interval date binary binary
  character nchar符号“an

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

  

ORA-06550:第2行第17列:PLS-00103:遇到符号“22”   期待以下之一:

     

pragma标识符是双引号分隔标识符   电流

我有那里的人,因为当我刚拿到“TABLE”时,它抱怨说:

发生以下错误:

  

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

     

1 个答案:

答案 0 :(得分: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;