FB存储过程中,字段名,表名能否做为变量

coaco 2004-05-01 08:23:02
一直没有查到,在FB的存储过程中是不是能用变量代替Select语句中的表名或者是字段名?
...全文
74 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
coaco 2004-06-26
  • 打赏
  • 举报
回复
无法结贴:

Microsoft VBScript 运行时错误 错误 '800a000d'

类型不匹配: 'objChild1.text'

/Expert/Function/Forum_Node_GiveTip.asp,行 93

这就是,俺们(CSDN)的ASPX?
coaco 2004-06-12
  • 打赏
  • 举报
回复
标准答案:FB 1.5 中字段名和表名是可以做变量的,SELECT语句同样适用,例如以下存储过程:

CREATE PROCEDURE SP_RESORT_TABLE (
S_ID_FROM INTEGER,
S_ID_TO INTEGER,
TABLENAME VARCHAR(30))
AS
BEGIN
EXECUTE STATEMENT 'UPDATE '||:TABLENAME||' SET SORTID = ' || :S_ID_TO ||'WHERE ID = '||:S_ID_FROM;
END


完全可以正常使用,我已经结过账了,可现在又变成了"未结账"
coaco 2004-05-12
  • 打赏
  • 举报
回复
楼上在说什么? 可能是太简练了,没看懂.
问题是这样的,我在构建一个库,根据不同的权限,存储过程会选用不同的条件,所以用的是SELECT,当然,办法是有的,而且也还不错 :),但是在使用之前我想知道FB在这方面是不是提供了更好的语法,或是根本没有.

xiangzhen() 的回答很全面,楼上的回答让人不知所以然.
hamzsy 2004-05-08
  • 打赏
  • 举报
回复
那么多单词你就偏偏要用同一个?
coaco 2004-05-07
  • 打赏
  • 举报
回复
非常感谢,不过可惜我是想用在 Select 语句里面的 :(
xiangzhen 2004-05-07
  • 打赏
  • 举报
回复
完全可以的,fb1.5中新增了execute statement 语句是专门干这种活的
set term !!;
recreate procedure p1(table_name varchar(20),table_field varchar(20)) as
declare variable sql_string varchar(1024);
begin
sql_string='update '||table_name||' set '||table_field||'=values';
execute statement sql_string;
end !!
set term ;!!

注:execute statement 语句只能用在procedure或trigger中,且能执只能执行update,delete,insert,create/drop database 等语句,不能执行select
xiang_zhen@21cn.com
Jasonn 2004-05-01
  • 打赏
  • 举报
回复
现在最高的版本好象也是 表名或字段名 是不能出现在存储过程里的,IB也一样

建议如果要灵活处理,可以在应用端动态生成SQL,即动态SQL

2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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