注册 登录
编程论坛 VFP论坛

见了鬼了,FOXPRO给ORACLE传SQL之前会先处理我的SQL吗

yuantao100 发布于 2020-06-29 09:34, 3422 次点击
有这么一句,:
if !sqlexec(osql,"select physic_code,physic_name,nvl(general_name,''),physic_spec from physic_dict_table","temp1001")>0 then


其中SQL语句:
select physic_code,physic_name,nvl(general_name,''),physic_spec from physic_dict_table

在ORACLE运行正常 ,但在FOX里面,提示找不到变量‘general_name’ 。。。
难道FOX不是直接把SQL传给ORACLE运行?。。
11 回复
#2
mywisdom882020-06-29 13:37
nvl() 是VFP的函数吧,ORACLE中,有无这个函数?
如果没有,是不能用的,
如果有,那general_name是变量还是字段名称,如果是变量,那就这样nvl(?general_name,''),如果是字段,就是你的那样
#3
yuantao1002020-06-29 16:23
以下是引用mywisdom88在2020-6-29 13:37:32的发言:

nvl() 是VFP的函数吧,ORACLE中,有无这个函数?
如果没有,是不能用的,
如果有,那general_name是变量还是字段名称,如果是变量,那就这样nvl(?general_name,''),如果是字段,就是你的那样

ORACLE里面应该是有这个函数的,我把这句SQL复制到PL/SQL里面运行正常啊。。。
再说,如果ORACLE里面没有的函数,可是我赋值给一个变量以后,运行就正常了,奇怪不?。。。
#4
yuantao1002020-06-29 16:23
我那个general_name是字段。。。。
#5
kiff2020-06-29 18:15
不会的,出错挂起,截图上来,看看是哪里出错
只有本站会员才能查看附件,请 登录
#6
yuantao1002020-06-29 18:34
回复 5楼 kiff
你看:
一个是调试的样子,
只有本站会员才能查看附件,请 登录

另一个是交互窗口下的样子。。。。
只有本站会员才能查看附件,请 登录


但是先赋值给一个变量,就可以正常运行了。。。
#7
kiff2020-06-29 18:52
回复 6楼 yuantao100
你可以用SQLSTRINGCONNECT()建立连接句柄 如:osql=SQLSTRINGCONNECT("连接串"),再用SPT.
#8
kiff2020-06-29 18:56
你这是连接SQLSERVER的连接串,不是ORACLE连接串,并且未成功建立连接
#9
kiff2020-06-29 18:58
ORACLE连接  osql=SQLSTRINGCONNECT("Driver={Microsoft ODBC for Oracle};Server=ora;Uid=orauser;Pwd=password;")
#10
kiff2020-06-29 19:00
SQLserver连接  osql=SQLSTRINGCONNECT("Driver={SQL Server};Server=Server;Address=Server,1433;Network=dbmssocn;Uid=sqluser;Pwd=sqlpassword;")
#11
fown2020-06-30 15:57
楼上正确,你没有链接ORACLE,但是链接的时候,并不一定是Driver={Microsoft ODBC for Oracle}
#12
yuantao1002020-06-30 17:34
以下是引用kiff在2020-6-29 18:56:06的发言:

你这是连接SQLSERVER的连接串,不是ORACLE连接串,并且未成功建立连接


哦。。。哦。。。。确实是我复制代码的时候,把这个弄错了。。。
粗心了。。

可这提示也太不靠谱了,不提示数据库的问题,提示下标错误。。。
1