storedproc:
create procedure testproc
@name char(8)
as
insert into tablename
values(@name)delphi program:
storedproc1.storedprocname:=testproc;
..........when storedproc1.active=true
system message: didn't find testproc ...
并且STOREDPROC1的PARAMS也对参数设置了。
当TESTPROC中不带参数时,没有错误;
究竟怎么回事?
create procedure testproc
@name char(8)
as
insert into tablename
values(@name)delphi program:
storedproc1.storedprocname:=testproc;
..........when storedproc1.active=true
system message: didn't find testproc ...
并且STOREDPROC1的PARAMS也对参数设置了。
当TESTPROC中不带参数时,没有错误;
究竟怎么回事?
storedproc1.prepare;
storedproc1.execproc;这有问题吗?
1、用一个TDATABASE控件连到数据库。
2、用一个TQUERY控件query1连到上面的TDATABASE控件。
3、query1.close;
query1.sql.clear;
query1.sql.add('exec testproc '+name参数字串);
query1.execsql;
abc是什么?变量吗?加个引号试试????
{
TStoredProc *StoredProc1;
StoredProc1 = new TStoredProc(NULL); StoredProc1->DatabaseName="yourdatabasename";
StoredProc1->StoredProcName="dbo.P_GETNEWID"; StoredProc1->Params->CreateParam(ftString, "@IDPara", ptInput);
StoredProc1->Params->CreateParam(ftString, "@DType", ptInput);
StoredProc1->Params->CreateParam(ftString, "@DType_B", ptInput);
StoredProc1->Params->CreateParam(ftInteger, "@ID_N", ptOutput);
StoredProc1->Params->CreateParam(ftString, "@ID_S", ptOutput); StoredProc1->ParamByName("@IDPara")->AsString=IDPara;
StoredProc1->ParamByName("@DType")->AsString=DType;
StoredProc1->ParamByName("@DType_B")->AsString=DType_B;
try
{
StoredProc1->ExecProc();
}
catch(Exception * mye)
{
ErrorBox(mye->Message.c_str());
delete StoredProc1;
return "";
} AnsiString Retv;
Retv = StoredProc1->ParamByName("@ID_S")->AsString;
delete StoredProc1; return Retv;}
用QUERY组件没有问题。thanks!
TO NONONONO:
CB我没有试,还是要谢谢你;
还有其他各位,一并谢了!现在STOREDPROC的问题我已经解决了:
原因:
在SQL SERVER中支持STOREDPROC重名,她自动用
STOREDPRCO NAME;1(2,3)来标示,我用的STOREDPROC
没有重名,但DELPHI里STOREDPROC1里自动还是把TESTPROC;1
作为过程名,只要改成TESTPROC,重设以下参数,就OK了;