create or replace view v_abc as
select ...., fun_xxx(p1) as field_1 from table_name;
视图本身访问无问题。
然后定义变量qry:TQuery;
qry.sql := 'select field_1 from v_abc ';
结果在执行到:qry.Open;
代码时报错:
faulted with message: 'access violation at 0x7c94a916: write of address 0x00040ffc'. Process Stopped.
是不是Delphi的sql语句中,不允许调用方法函数(function)?
5 个解决方案
#1
qry.sql := 'select field_1 from v_abc ';
你SQL应该这样赋值額~
ADOQuery1.SQL.Text := 'select field_1 from v_abc ';
或者
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Add('select field_1 from v_abc ');
如果语句 select field_1 from v_abc 本身运行无问题,那就说明可以调用方法函数了。
你SQL应该这样赋值額~
ADOQuery1.SQL.Text := 'select field_1 from v_abc ';
或者
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Add('select field_1 from v_abc ');
如果语句 select field_1 from v_abc 本身运行无问题,那就说明可以调用方法函数了。
#2
视图v_abc字段field_1是通过oracle方法 fun_xxx(p1)获取后得到的,如果只是表格额某一字段就没有问题,但是通过方法二次查询获取就不行了。
#3
先把'select field_1 from v_abc '; 这个showmessage一下 看看语句是否错误
#4
首先,你必需保证你的语句
select * from v_abc
在 sql plus 或 PL/SQL Developer 等工具里面调试通过…
TQuery只是一个获取数据的载体,如果你语句本身都调试不过去,肯定会报错了……
select * from v_abc
在 sql plus 或 PL/SQL Developer 等工具里面调试通过…
TQuery只是一个获取数据的载体,如果你语句本身都调试不过去,肯定会报错了……
#5
谢谢各位,先把'select field_1 from v_abc '; 这个showmessage一下 看看语句是否错误
SQL本身没有问题,视图也可以编译通过,就是在用TQuery打开数据集时报错。
最后判断是视图的查询字段里用到的外函数个数太多所致(超过4个),引用外函数的字段减少到4个以下就可以了。
再次谢谢各位!
SQL本身没有问题,视图也可以编译通过,就是在用TQuery打开数据集时报错。
最后判断是视图的查询字段里用到的外函数个数太多所致(超过4个),引用外函数的字段减少到4个以下就可以了。
再次谢谢各位!
#1
qry.sql := 'select field_1 from v_abc ';
你SQL应该这样赋值額~
ADOQuery1.SQL.Text := 'select field_1 from v_abc ';
或者
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Add('select field_1 from v_abc ');
如果语句 select field_1 from v_abc 本身运行无问题,那就说明可以调用方法函数了。
你SQL应该这样赋值額~
ADOQuery1.SQL.Text := 'select field_1 from v_abc ';
或者
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Add('select field_1 from v_abc ');
如果语句 select field_1 from v_abc 本身运行无问题,那就说明可以调用方法函数了。
#2
视图v_abc字段field_1是通过oracle方法 fun_xxx(p1)获取后得到的,如果只是表格额某一字段就没有问题,但是通过方法二次查询获取就不行了。
#3
先把'select field_1 from v_abc '; 这个showmessage一下 看看语句是否错误
#4
首先,你必需保证你的语句
select * from v_abc
在 sql plus 或 PL/SQL Developer 等工具里面调试通过…
TQuery只是一个获取数据的载体,如果你语句本身都调试不过去,肯定会报错了……
select * from v_abc
在 sql plus 或 PL/SQL Developer 等工具里面调试通过…
TQuery只是一个获取数据的载体,如果你语句本身都调试不过去,肯定会报错了……
#5
谢谢各位,先把'select field_1 from v_abc '; 这个showmessage一下 看看语句是否错误
SQL本身没有问题,视图也可以编译通过,就是在用TQuery打开数据集时报错。
最后判断是视图的查询字段里用到的外函数个数太多所致(超过4个),引用外函数的字段减少到4个以下就可以了。
再次谢谢各位!
SQL本身没有问题,视图也可以编译通过,就是在用TQuery打开数据集时报错。
最后判断是视图的查询字段里用到的外函数个数太多所致(超过4个),引用外函数的字段减少到4个以下就可以了。
再次谢谢各位!