下面是一段存储过程的代码,实现修改功能:
CREATE PROCEDURE [update_data]
(@num_1 [int],
@name_2 [char],
@num_3 [int],
@name_4 [char](10))
AS UPDATE [a].[dbo].[data]
SET [num] = @num_3,
[name] = @name_4
WHERE
( [num] = @num_1 AND
[name] = @name_2)前台delphi代码如下:
ADOStoredProc1.Parameters.ParamByName('@num_1').Value:=i;
ADOStoredProc1.Parameters.ParamByName('@name_2').Value:=s;
ADOStoredProc1.Parameters.ParamByName('@num_3').Value:=strtoint(trim(edit1.Text));
ADOStoredProc1.Parameters.ParamByName('@name_4').Value:=trim(edit2.Text);
ADOStoredProc1.ExecProc;
其中:i,s 是变量,用于存储修改前的值;edit1和edit2中是修改后的。
现在,点击按钮后无任何变化。
请问:是哪里出错了?请各位帮助!
CREATE PROCEDURE [update_data]
(@num_1 [int],
@name_2 [char],
@num_3 [int],
@name_4 [char](10))
AS UPDATE [a].[dbo].[data]
SET [num] = @num_3,
[name] = @name_4
WHERE
( [num] = @num_1 AND
[name] = @name_2)前台delphi代码如下:
ADOStoredProc1.Parameters.ParamByName('@num_1').Value:=i;
ADOStoredProc1.Parameters.ParamByName('@name_2').Value:=s;
ADOStoredProc1.Parameters.ParamByName('@num_3').Value:=strtoint(trim(edit1.Text));
ADOStoredProc1.Parameters.ParamByName('@name_4').Value:=trim(edit2.Text);
ADOStoredProc1.ExecProc;
其中:i,s 是变量,用于存储修改前的值;edit1和edit2中是修改后的。
现在,点击按钮后无任何变化。
请问:是哪里出错了?请各位帮助!
if exists(select * from sysobjects where name='update_data')
drop procedure update_data
go
create procedure update_data
@num_1 int,
@name_2 char,
@num_3 int,
@name_4 char(10)
as set nocount on begin
begin tran
UPDATE tablename SET num = @num_3,name = @name_4
WHERE
num = @num_1 AND name = @name_2
if @@error<>0
begin
select 'error'
rollback tran
return
end
commit tran
select 'success'
end
return
end
前台调用
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOStoredProc1.Parameters.ParamByName('@num_1').Value:=i;
ADOStoredProc1.Parameters.ParamByName('@name_2').Value:=s;
ADOStoredProc1.Parameters.ParamByName('@num_3').Value:=strtoint(trim(edit1.Text));
ADOStoredProc1.Parameters.ParamByName('@name_4').Value:=trim(edit2.Text);
ADOStoredProc1.ExecProc(update_data);
end;
试一下
这样用啊LZ的代码都没有知名存储过程名,你点击程序怎么知道执行哪个存储过程呢?