前言
经常有很多初学者问到在delphi中如何调用SQL Server的存储过程?问题其实很好解决但问得多了也就不愿答了下面我将用实例进行说明从在SQL Server中创建存储过程到调用的完整实例
首先打开sql server管理器在pubs数据库中建一个测试表表名为test字段有idname和desc全部为字符型如果你不知道建表那么打开sql查询分析器贴上以下的代码然后按执行就会自动生成test表
use pubs
if exists (select * from dbosysobjects where id = object_id(N[dbo][test]) and OBJECTPROPERTY(id NIsUserTable) = )
drop table [dbo][test]
GO
CREATE TABLE [dbo][test] (
[id] [char] () COLLATE Chinese_PRC_CI_AS NOT NULL
[name] [char] () COLLATE Chinese_PRC_CI_AS NULL
[descrip] [char] () COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
然后我们来创建一个存储过程其功能为在test中插入一条新记录创建存储过程的代码如下同样的你也可以复制到查询分析器里直接执行就可以:
CREATE PROCEDURE myInsert
@id char()
@name varchar()
@descrip varchar()
AS
begin
insert into test (idnamedescrip) values (@id@name@descrip)
if @@rowcount=
begin
raiserror(error)
rollback transaction
end
end
GO
接下来新建一个工程文件在form上放置如下控件并设置属性(括号内):
一个ADOConnection: TADOConnection;
(LoginPrompt:=false;
connectionstring:=Provider=SQLOLEDB;Persist Security Info=True;User ID=sa;Initial Catalog=pubs;Data Source=(local);)
一个ADOStoredProc: TADOStoredProc;属性为:
(connection:=adoconnection;
procedurename:=myinsert;//上面我们创建的那个)
一个ADOTable: TADOTable;属性为:
(connection:=adoconnection;
tablename:=test;//上面我们创建的那个)
一个Datasource属性为:
(dataset:=Tadotable;)
一个 DBGrid: TDBGrid;属性为
(datasource:=datasource;)
一个Button在其Onclick中写到:
with adoStoredproc do
begin
ParametersParamByName(@id)Value := ;
parametersParamByName(@name)Value := myname;
parametersParamByName(@descrip)Value :=nosubject;
ExecProc;
end;
AdotableClose;
adotableOpen;