起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 276|回复: 13

【[结】]平台中的Tquery执行PLSQL遇到的问题。

[复制链接]
发表于 2010-1-5 14:06:05 | 显示全部楼层 |阅读模式
现在有这样一个语句:
var
  lquery:Tquery;
begin
  v_sql:=       ' declare ';
  v_sql:=v_sql+ ' type id_type is table of number(20) index by binary_integer;  ';
  v_sql:=v_sql+ ' type name_type is table of varchar2(20) index by binary_integer;  ';
  v_sql:=v_sql+ ' id_tab id_type;  ';
  v_sql:=v_sql+ ' name_tab name_type;  ';
  v_sql:=v_sql+ ' begin  ';
  v_sql:=v_sql+ '   for i in 1..500 loop';
  v_sql:=v_sql+ '     id_tab(i) :=i; ';
  v_sql:=v_sql+ '     name_tab(i) :=''N''||to_char(i);  ';
  v_sql:=v_sql+ '   end loop; ';
  v_sql:=v_sql+ '   end;  ';
  lquery:=Tquery.Create(self);
  try
   lquery.ConnectionString:='DATABASEURL=Biz:\SYSTEM\SYSTEM.DATABASE';
    lquery.CommandText:=v_sql;
    lquery.Execute;
  finally
    lquery.Free;
    lquery:=nil;
  end;
end;

执行时老报错。

平台中执行SQL时还需要做其他什么处理吗?不是直接把SQL语句提交到数据库吗?

上面的可以在PLSQL中正常执行。
回复

使用道具 举报

发表于 2010-1-5 14:46:42 | 显示全部楼层
执行时老报错。
请楼主把原始的错误信息贴出来看看吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-5 14:54:58 | 显示全部楼层
出错信息如下:
---------------------------
X3 Studio
---------------------------
运行数据绑定的时候发生异常:ExecuteSQL error: ORA-06550: 第 1 行, 第 225 列:
PLS-00103: 出现符号 ""在需要下列之一时:
:= . ( % ;
符号 ":=" 被替换为 "" 后继续。
ORA-06550: 第 1 行, 第 246 列:
PLS-00103: 出现符号 ""在需要下列之一时:
:= . ( % ;
符号 "(" 被替换为 "" 后继续。


类型:Exception。
---------------------------
确定   
---------------------------

  v_sql:=v_sql+ '     id_tab(i) :=i; ';
  v_sql:=v_sql+ '     name_tab(i) :=''N''||to_char(i);  ';

这里面的赋值不对吗?
sqlplus里面执行时正常的。
回复 支持 反对

使用道具 举报

发表于 2010-1-5 15:48:05 | 显示全部楼层
你是把 赋值给 lquery.CommandText  的值,跟踪代码看到的v_sql 这个值,放到sqlplus 执行的吗?如果不是,你把v_sql 这个值放进去执行看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-5 16:32:53 | 显示全部楼层
上面说所说的 就是把 lquery.CommandText   的值放到sqlplus里面执行的。
回复 支持 反对

使用道具 举报

发表于 2010-1-5 18:08:15 | 显示全部楼层
哦,我找个ORACLE的环境测试一下。
楼主把lquery.CommandText 的值也跟帖跟一下吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-6 07:49:10 | 显示全部楼层
declare  type id_type is table of number(20) index by binary_integer;   type name_type is table of varchar2(20) index by binary_integer;   id_tab id_type;   name_tab name_type;   begin     for i in 1..500 loop     id_tab(i) :=i;      name_tab(i) :='N'||to_char(i);     end loop;    end;
回复 支持 反对

使用道具 举报

发表于 2010-1-6 08:41:07 | 显示全部楼层
你建个存储过程,然后再调用。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-1-6 09:13:30 | 显示全部楼层
调用存贮过程是没有问题,但是那样不灵活。
回复 支持 反对

使用道具 举报

发表于 2010-1-6 09:18:55 | 显示全部楼层
在java里面执行这样的东西是有些限制的,你可以百度下你上面那个ora错误。可以在网上看到一些同样的错误。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-12 23:32 , Processed in 0.039579 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表