关于存储过程(150分)

  • 主题发起人 主题发起人 fartripLiao
  • 开始时间 开始时间
F

fartripLiao

Unregistered / Unconfirmed
GUEST, unregistred user!
问题一。
小弟写了一个存储过程但在DELPH中不知道怎么调用
CREATE PROCEDURE secondproc AS
declare @one char(10)
declare @two char(11)
declare @three char(11)
declare @four char(12)
select @three="select * from "+ @one +" where "+@four+"="+@two
exec(@three)

问题二
create procedure my as
declare @one char(10)
select.......

create procedure my(@one char(10)) as
.......
它们之间有什么区别一般来说在什么情况下采用第一种
什么情况下采用第二种

现奉上150大洋
 
(1)
create procedure p_xxx (@tablename varchar(10))
as
EXEC ("select * from "+@tablename)
使用dataccess中的storedproc
设置databasename,和storedprocname
打开该storedproc的params
datatype=ftstring
name=@tablename
paramtyep=ptinput
value=t_xxx //假设数据库中有该表
type=string

然后使用一DataSource连他
使用一dbgrid连DataSource,
修改storedproc的active为true
这时可以看到在dbgird里有该表数据了

(2)
function uf_recordcount(as_table,as_where:string):integer;
var hi:string;
begin
result:=1;
end;

区别如下
create procedure my as
declare @one char(10)
其中@one如同hi

create procedure my(@one char(10)) as

其中@one如同as_table或as_where

明白了吧?

穷死我了,拜托给分!




 
问题一
随便看本书就知道了
问题二
create procedure my as
declare @one char(10)
select.......
这样定义的变量基本上是存储过程的内部变量,不和外部交互。
create procedure my
(@one char(10))
as
.......
这样定义有的是output,有的是input,主要用于和外部交互
 
对于第一个问题我希望回答详细一些。
CREATE PROCEDURE secondproc AS
declare @one char(10)
declare @two char(11)
declare @three char(11)
declare @four char(12)
select @three="select * from "+ @one +" where "+@four+"="+@two
exec(@three)
如上过程
在DELPHI 中的参数怎么样设置
另怎么样给参数赋值。
怎么样执行这一句等,

各位大虾最好能给出经测试成功的源码(指DELPHI调用此存储过程的所有源码)
我经测试成功这150将全部给这个人。
多谢各位了。
 
1、
选adoconnection、adostoredproc 的connection = adoconnection1
datasource 的dataset 用 adostoredproc1
dbgrid 的 datasource 用 datasource1
adostoredproc 的parameter设置好
dbgrid 的 active 设为 true ,现在应该可以看到数据了。

2、
create procedure my as
declare @one char(10)
select.......
是没有参数的proc

create procedure my(@one char(10)) as
.......
是有参数的proc

参数@one在过程中都能使用,第二种是用来在外部传递数值用的
 
问题一是错的,问题二是传入参数
 
多人接受答案了。
 
后退
顶部