很基础的问题,SQL语句中的表名,列名可以是变量吗?谢谢!

gloryict 2003-11-02 10:41:40
string ls_tabname //表名
string ls_columnname //列名
integer li_sum //该列值的总和
select :ls_columnname from :ls_tabname;
上面这样写可以吗?如果我想把这一列的值加起来,是不是可以这样写:
select sum(:ls_columnname) into :li_sum from :ls_tabname;
但都有错误,应该怎么写?谢谢!
...全文
315 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lmby 2003-11-02
  • 打赏
  • 举报
回复
sorry

immediate execute :ls_sql;
开始写掉了:
^_^
lmby 2003-11-02
  • 打赏
  • 举报
回复
那要看你具体的sql了。你可以把ls_sql的值贴出来看看,
hzhxxx 2003-11-02
  • 打赏
  • 举报
回复
单步调试,把 ls_sql 的值放到数据库画板中执行,看你的 sql 语句的错误
gloryict 2003-11-02
  • 打赏
  • 举报
回复
大哥还是有错误,怎么解决?谢谢
该行有语法错误 immediate execute ls_sql;
lmby 2003-11-02
  • 打赏
  • 举报
回复
可以是变量。但不能直接这样写。
可以这样:

string ls_tabname //表名
string ls_columnname //列名
integer li_sum //该列值的总和

string ls_sql

ls_sql = 'select ' + ls_columnname + ' from ' + ls_tabname
immediate execute ls_sql;

ls_sql = 'select sum(' + ls_columnname + ') from ' + ls_tabname
immediate execute ls_sql;
gloryict 2003-11-02
  • 打赏
  • 举报
回复
真是感谢楼上这位大哥,问题基本都解决了
以后还要向大哥多多请教,我才开始用pb,谢谢!
liliang800207 2003-11-02
  • 打赏
  • 举报
回复
可以
但要用动态sql语句
lmby 2003-11-02
  • 打赏
  • 举报
回复
1.两个where之间要有and
2.字符要有"

ls_SQLSelect = " Select LM from tysj_bldy where BM = '" + ls_tabname + "' and LLBBM = '" + ls_value + "'"

gloryict 2003-11-02
  • 打赏
  • 举报
回复
to :dingzhaofeng
正确的写法应该怎么样?
谢谢!
gloryict 2003-11-02
  • 打赏
  • 举报
回复
楼上这位大哥,我就是这样写的,我也知道错了(编译器报错),但我不知道为什么错了,而且我觉得并没有错,因为 tysj_bldy 是表名, bm,llbbm是列名。
ls_SQLSelect = " Select LM from tysj_bldy where BM = " + ls_tabname + " LLBBM = " + ls_value
dingzhaofeng 2003-11-02
  • 打赏
  • 举报
回复
ERROR: ls_SQLSelect = " Select LM from tysj_bldy where BM = " + ls_tabname + " LLBBM = " + ls_value
gloryict 2003-11-02
  • 打赏
  • 举报
回复
各位大哥,帮帮忙吧,谢谢!
gloryict 2003-11-02
  • 打赏
  • 举报
回复
真是很感谢大家的回答,问题基本解决的,但现在有个新问题,关于创建动态数据窗口的
代码如下:
其中:
ls_tabname ,ls_value 都是变量
tyjs_bldy是表名 ,lm,bm,llbbm都是该表的列名

但执行到这里:ls_Syntax = SQLCA.SyntaxFromSQL(ls_SQLSelect ,"Style(Type=Form)",ls_Error)

还是报错,错误如下:列名无效

但表名,列名确实没有错,为什么?各位大哥帮帮忙,谢谢!

ls_SQLSelect = " Select LM from tysj_bldy where BM = " + ls_tabname + " LLBBM = " + ls_value
ls_Syntax = SQLCA.SyntaxFromSQL(ls_SQLSelect ,"Style(Type=Form)",ls_Error)
if len(ls_Error) >0 then
return "创建动态窗口失败" + ls_Error
else
dw_measure.Create(ls_Syntax,ls_Error2)
if len(ls_Error2) > 0 then
return "创建动态窗口失败"+ls_Error2
else
return ("1")
end if
end if
end if

1,056

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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