sql语句
数据表AB中velocity定义为varchar类型,其中有一些>5,20~25等数据,GetNumeic()是自己编写的一个取数字的函数,头文件里我也加了GetNumeric的头文件,sql语句如下写:
str="select * from AB where cast(GetNumeric(velocity) as float)<"+EditV->Text;
为啥运行时出现无法辨认的函数名GetNumeric。在别的地方用GetNumeric就可以,写到sql语句里就无法辨认,这是怎么回事,应该怎么写
问题点数:30、回复次数:10Top
1 楼txt587(流浪汉)回复于 2005-01-04 10:51:34 得分 4
用个中间变量试试Top
2 楼tompkins2000(AirHunter)回复于 2005-01-04 11:00:19 得分 4
SQL不能这样用滴,要么写个存储过程,要么用中间变量Top
3 楼Cedar1104()回复于 2005-01-04 11:02:29 得分 0
用中间变量怎么写Top
4 楼sunxiaohui(sunxiaohui)回复于 2005-01-04 11:04:31 得分 5
因的sql语句是在数据库系统执行的,所以你自己编写的函数为本地的开发语言函数,数据库系统不可能执行的,数据库系统只能执行标准的sql语句(当然各数据库系统可能会有自己的扩展)。
你的问题解决办法可以参考对应数据库系统的函数手册,类似转换类型的数据库函数一般均有。
如:oracle 好象是isnumber();Top
5 楼ZengMuAnSha(曾牧暗鲨)回复于 2005-01-04 11:07:29 得分 7
汉死了 你呀呀!!
GetNumeic 是用BCB 写的吧?
如果是的话! 你传给数据库的是 str="select * from AB where cast(GetNumeric(velocity) as float)<"+EditV->Text; STR中的命令是叫数据库去执行的. GetNumeric数据库怎么知道在哪里呀?
建议你在数据库端用TSQL重写个GetNumeric
Create Function GetNumeric(Velocity Varchar(255)) out Integer;
AS
begin
............
return
end
Go
Top
6 楼xpdavis(咕嘟-不想孤独)回复于 2005-01-04 11:08:28 得分 1
晕,也有这样用的,夸张Top
7 楼Cedar1104()回复于 2005-01-04 11:18:54 得分 0
不好意思,比较笨。在数据库端写的过程,怎么调用到CB程序里边呀,要不要加头函数什么的Top
8 楼cool222(坚持到底)回复于 2005-01-04 12:20:02 得分 3
SQL语句最终是交给数据库引擎负责的,与BCB无关。Top
9 楼tompkins2000(AirHunter)回复于 2005-01-04 12:51:12 得分 4
不好意思,比较笨。在数据库端写的过程,怎么调用到CB程序里边呀,要不要加头函数什么的
用TStoredProc控件Top
10 楼gaoxumei(无情剑客)回复于 2005-01-04 12:56:56 得分 2
数据库不知道这个GetNumeric是什么;Top




