Query1->SQL->Text="declare @ss int; set @ss=5;declare @condition varchar(100);set @condition=where id=+cast(@ss as varchar 10));sp_textcopy xmwhut,sa,990540329,test,videotable,video_file,C:\\12.evd,@condition,O" ;
Query1->ExecSQL();
其中sp_textcopy是定义的一个存储过程,请问上述语句错误在哪里???
而且我要想使变量ss的值为StrToInt怎么实现,能不能具体一点,谢谢先,一旦可以运行,马上结贴,而且可以再送200分。
n你那个是什么东西阿,怎么都看不懂.我都怀疑呢那个是不是一个sql语句.你最好把你最终的sql显示出来 看看,是否符合你的要求,
ShowMessage(Query1->SQL->Text)
如果ss想代替,可以用这种办法
Sql = Sql1 + Edit1->Text + Sql2 不用转化,如果你不加引号就表示为整形.
看了就头痛
SQL偶不在行,
下面的可解决
你把程序分开写不就行了
先AnsiString tmp="............ @ss=";
tmp+=Edit1->Text.ToIntDef(9999999999999999999999);
//不能保证用户在Edit里面就一定输入正确数字“999999999999999999999999”是一个非
//法的数字用
//if(Edit1->Text.ToIntDef(9999999999999999999999==999999999999999999999999)
//来简单判断是否为和法输入。
tmp+="XXXXXXXXXXX";
Query1->SQL->Text=tmp;
Query1->ExecSQL();
把分号去掉,SQL中不用分号
把分号去掉,在存储过程sp_textcopy 前加EXEC ;
为什么不用StoredProc控件呢!写入StoredProcName, 再用paramByname写入参数的值,execute就可以了!
如果非要用query,也可以先构成SQL不用declare 变量啊!如果批次执行SQL语句,存储过程前面EXEC一定是要加的,最后最好再加个 go结束!
你可以用
Query1->SQL->Add("");
一行行的添加。
不用分号。
如果你在数据中内定好了存贮过程,完全可把参数传进去的。
查询设计器不支持 DECLARE CURSOR SQL 构造
运行成功?得分:?!
serafini(云)的方法肯定行!
学习!
PDatas是一个TStoredProc控件,有参数下面7个,是一个不返回结果集的存储过程!想怎么转换都可以,而且很清晰。
想找具体的帮助,用TStoredProc关键字就可以在c++builder找到具体的帮助。
希望对你有帮助!呵呵!
PDatas->Active = false;
try
{
PDatas->ParamByName("@batch")->AsString = LEbatch->Text;
PDatas->ParamByName("@card")->AsString = LEcard->Text;
PDatas->ParamByName("@operator")->AsString = node->node_id;
PDatas->ParamByName("@bad_record_score")->AsFloat = b_s;
PDatas->ParamByName("@bad_record_memo")->AsString = Vedit->Values[Vedit->Keys[2]];
PDatas->ParamByName("@manual_score")->AsFloat = m_s;
PDatas->ParamByName("@manual_score_memo")->AsString = Vedit->Values[Vedit->Keys[4]];
PDatas->Prepare();
PDatas->ExecProc();
}