可以將字段名作為參數傳入嗎?

tree2000 2006-12-01 04:04:22

RT。
可以实现如下代码吗?

Select :FieldName From "Table"
Where :FieldName > 50

...全文
240 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
tree2000 2006-12-09
  • 打赏
  • 举报
回复
SQL SERVER 的語法吧?有沒有IB的?我翻譯不出來。
hbqc_zh 2006-12-09
  • 打赏
  • 举报
回复
倒是真的,把字段作一个变量处理吗,
生成一个字符串@TxtSql,再
exec(@TxtSql)就可以了
CruelYoung123 2006-12-06
  • 打赏
  • 举报
回复
Mark
tree2000 2006-12-04
  • 打赏
  • 举报
回复
唉,各位大哥,我用的是IB中的存儲過程。如果用SQL語句,那當然還是不難的。
如果要寫一百個字段的SELECT,為這100個字段寫一百個SP,那真是煩得很,所以,我是強烈抗議,為什麼沒有可以傳入字段名作為參數的SQL呢,這樣也可以解耦DB與業務邏輯。
dongsheng10101 2006-12-04
  • 打赏
  • 举报
回复
可以啊,换个思路来做啊.
例如下面一个简单的查询存储过程:
CREATE PROCEDURE SearchCust
@cols varchar(100),
@tableNM varchar(50)
AS
declare @sql varchar(200)
set @sql ='select ' + @cols + ' from ' + @tableNM
exec(@sql)
fjye 2006-12-02
  • 打赏
  • 举报
回复
使用举例
int MsgTypeID=1;
AnsiString MsgContent="测试123";
FDM->ADOQuery7->Close();
FDM->ADOQuery7->SQL->Clear();
FDM->ADOQuery7->SQL->Add("insert into Message(id,memo) values(:MsgTypeID,:MsgContent)");
FDM->ADOQuery7->Parameters->Items[0]->Value = MsgTypeID;
//FDM->ADOQuery7->Parameters->Items[1]->DataType = ftVarBytes;
//FDM->ADOQuery7->Parameters->Items[1]->DataType = ftBytes;
FDM->ADOQuery7->Parameters->Items[1]->DataType = ftBlob;
FDM->ADOQuery7->Parameters->Items[1]->Value = MsgContent;
FDM->ADOQuery7->Prepared;
try
{
FDM->ADOQuery7->ExecSQL();
}
catch(...)
{
ShowMessage("error");
}
laowang2 2006-12-02
  • 打赏
  • 举报
回复
在sqlserver中,字段名和表名做参数,必须用动态sql.
CACACACACA 2006-12-01
  • 打赏
  • 举报
回复
无论怎么样,都是像keiy()那样先构造出sql语句,然后再给SQLSERVER来执行.
路过路人乙 2006-12-01
  • 打赏
  • 举报
回复
- -~我收回上面的话。。。。。啊啊啊,,,郁闷
路过路人乙 2006-12-01
  • 打赏
  • 举报
回复
可以。。。

PS:你这SQL语句能通过吗?
FFSB 2006-12-01
  • 打赏
  • 举报
回复
是的,不可以。SQL有说.
柯本 2006-12-01
  • 打赏
  • 举报
回复
我试了一下,应该不可以,但你可用变量来代替参数:
String x;
char *FieldName="YourFieldName";
x.Format("Select %s From Table Where %s > 50",FieldName,FieldName);
Query1->SQL->Text=x;

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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