要在数据库中建立存储过程如下:(存储过程在查询分析中建立没问题)
create proc p1
as
begin tran
update t1 set f1='1'
if @@error<>0
goto E
insert into t2(f1) values('2')
if @@error<>0
goto E
commit tran
returnE:
rollback tran
return
目的:用Delphi的ADOQuery在数据库中建立上面的存储过程,按钮1代码如下:procedure TForm1.Button1Click(Sender: TObject);
var
s: String;
begin
s := “放SQL语句”;//取上面的建立存储过程语句
with ADOQuery1 do
begin
if Active then close;
Sql.Clear;
SQL.Add(s);
ExecSQL;
end;
end;程序执行到 ExecSQL时,报错:“不正常的参数定义。提供了不一致或不完整的信息”如果将要建立的存储过程语句改成
create proc p1
as
begin tran
update t1 set f1='1'
if @@error<>0
begin
rollback tran
return
end;
insert into t2(f1) values('2')
if @@error<>0
begin
rollback tran
return
end
commit tran
return那么,ADOQuery1.ExecSQL就能执行成功。我发现问题出在要执行SQL语句中有标签的原因上。现在我要用ADOQuery向数据库中建立很多存储过程,这些存储过程很多都有标签。怎么办???ADOQuery不能执行带有标签的SQL语句吗?
create proc p1
as
begin tran
update t1 set f1='1'
if @@error<>0
goto E
insert into t2(f1) values('2')
if @@error<>0
goto E
commit tran
returnE:
rollback tran
return
目的:用Delphi的ADOQuery在数据库中建立上面的存储过程,按钮1代码如下:procedure TForm1.Button1Click(Sender: TObject);
var
s: String;
begin
s := “放SQL语句”;//取上面的建立存储过程语句
with ADOQuery1 do
begin
if Active then close;
Sql.Clear;
SQL.Add(s);
ExecSQL;
end;
end;程序执行到 ExecSQL时,报错:“不正常的参数定义。提供了不一致或不完整的信息”如果将要建立的存储过程语句改成
create proc p1
as
begin tran
update t1 set f1='1'
if @@error<>0
begin
rollback tran
return
end;
insert into t2(f1) values('2')
if @@error<>0
begin
rollback tran
return
end
commit tran
return那么,ADOQuery1.ExecSQL就能执行成功。我发现问题出在要执行SQL语句中有标签的原因上。现在我要用ADOQuery向数据库中建立很多存储过程,这些存储过程很多都有标签。怎么办???ADOQuery不能执行带有标签的SQL语句吗?
建立存储过程也属于SQL语句吧!为什么在有标签的SQL语句中ADOQuery1.ExecSQL不成功?
as
begin
begin tran
update t1 set f1='1'
if @@error<>0
goto E
insert into t2(f1) values('2')
if @@error<>0
goto E
commit tran
return
E:
rollback tran
return
end
建存储过程时里面要用begin...end包含住