现有一个表bumen ,有字段bmid,bmname;和一个字符串mystrADOQuery1.close;
ADOQuery1.sql.text := 'select bmname from bumen where bmname='''+mystr+'''';
ADOQuery1.open;if ADOQuery1.isempty then
begin
ADOQuery1.close;
ADOQuery1.sql.text := 'insert into bumen (bmname) values '''+mystr+'''';
ADOQuery1.ExecSQL; ADOQuery1.close;
ADOQuery1.sql.text := 'select * from bumen';
ADOQuery1.open;end
else
begin
ShowMessage('');
end;由于是网络版,ADOQuery1用了3次语句来执行,怕这中间出现数据更新,得到的数据不完整,希望能用一条语句来执行。
ADOQuery1.sql.text := 'select bmname from bumen where bmname='''+mystr+'''';
ADOQuery1.open;if ADOQuery1.isempty then
begin
ADOQuery1.close;
ADOQuery1.sql.text := 'insert into bumen (bmname) values '''+mystr+'''';
ADOQuery1.ExecSQL; ADOQuery1.close;
ADOQuery1.sql.text := 'select * from bumen';
ADOQuery1.open;end
else
begin
ShowMessage('');
end;由于是网络版,ADOQuery1用了3次语句来执行,怕这中间出现数据更新,得到的数据不完整,希望能用一条语句来执行。
SqlStr := 'declare @reccnt int begin select @reccnt=count(0) from bumen WHERE bmname='+QuotedStr(mystr)+' if @reccnt>0 select * from bumen end else begin insert into bumen(bmname) values('+QuotedStr(mystr)+') select * from bumen end';
ADOQuery1.sql.text := SqlStr
建议使用存储过程实现,如果实在不想用,就使用SQL语句块来实现吧,如
SqlStr := 'declare @reccnt int begin select @reccnt=count(0) from bumen WHERE bmname='+QuotedStr(mystr)+' if @reccnt>0 select * from bumen else begin insert into bumen(bmname) values('+QuotedStr(mystr)+') select * from bumen end end';
ADOQuery1.sql.text := SqlStr