怎样处理"关键字user作为表名"的问题

flyerlxg 2004-04-28 04:54:21
因为数据库是别人已经设计好的,其内有一张表,表名为"user",其中有字段"id"、"user_name"等,现在我必须使用其中的资料,但原有程序在使用此表,我不能更改表名及字段名,我在PB中直接使用内嵌的SQL语句(如下)
select [id],[user_name] into :sle_iqcno.text,:sle_iqcname.text from [user] where user_card = :physicscode;
PB中提示:对象名 user 无效。
如果写成如下语句:
select [id],[user_name] into :sle_iqcno.text,:sle_iqcname.text from user where user_card = :physicscode;
PB中则提示:在关键字"user"附近有语法错误

我开始是通过在数据库端建立存储过程解决,但感觉不是最好的解决办法,谁有更好的、可以直接在PB中解决而不需要动数据库的解决方法呢,请赐教!
谢谢!
...全文
205 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mittee 2004-04-29
  • 打赏
  • 举报
回复
我帮忙顶
zysys 2004-04-29
  • 打赏
  • 举报
回复
奇怪怎么会这样,我也试了不行,用数据窗口试试行不行
xyzliuin 2004-04-29
  • 打赏
  • 举报
回复
user是sql server的关键字,在pb中引用会有很多问题

你到sqlserver区看有没有好的解决方法
flyerlxg 2004-04-29
  • 打赏
  • 举报
回复
我已经用动态SQL的游标解决了这个问题,用数据窗口也不行的。动态SQL的语句如下:
declare GetUserData dynamic cursor for sqlsa;
prepare sqlsa from 'select [id],[user_name] from [user] where user_card = ?';
open dynamic GetUserData using :physicscode;
fetch GetUserData into :sle_iqcno.text,:sle_iqcname.text;
close GetUserData;
其中physicscode就是输入的参数,传出参数直接写到控件的text属性中去。
lzheng2001 2004-04-28
  • 打赏
  • 举报
回复
总之,我试过用嵌入式SQL和游标都不行, 所以用存储过程是最好的方法了!
flyerlxg 2004-04-28
  • 打赏
  • 举报
回复
我现在也是用存储过程解决的,不过设计数据库的是以前的人设计的,而且我不能更改,我就是提出来看大家能否不用存储过程而改用其他方法。
lzheng2001 2004-04-28
  • 打赏
  • 举报
回复
我刚刚试过,的确不行,好奇怪呀! USER 明明不是PB的关键字呀? 又是PB的BUG???
USER 在SQL SERVER中是一个系统变量,不知跟这有没有关系?

说来也是小事,很容易解决,用存储过程返回就好了,我公司的软件到数据库取数据都是用存储过程的方式的,方便维护.
flyerlxg 2004-04-28
  • 打赏
  • 举报
回复
罗大佑:数据库是SQL 2000,目前还没有试着用动态SQL语句去实现,稍后试一下
程序方程:在表名前加dbo也是同样如此。
select [id],[user_name] into :sle_iqcno.text,:sle_iqcname.text from dbo.user where
user_card = :physicscode;

1加1=0:虽然user 在书写的时候没有显示颜色,但您保存的时候PB会弹出提示的,您可以试一下;另外,即使按您的意思在ID及user_name处去掉方括号,问题依旧。第三,ID是字符型字段,长度为6
lzheng2001 2004-04-28
  • 打赏
  • 举报
回复
1. user 不是PB的关键字
2. 你的语句有语法错误,应该为:

select id,user_name into :sle_iqcno.text,:sle_iqcname.text from user where user_card = :physicscode;

另外还要如果ID是否有字符型字段.
hzhxxx 2004-04-28
  • 打赏
  • 举报
回复


表名前面加 dbo
dotnba 2004-04-28
  • 打赏
  • 举报
回复
什么数据库啊?
你用动态SQL应该可以实现。就不直接用嵌入SQL。

740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧