向各位大侠学习存储过程(100分)

  • 主题发起人 主题发起人 pyliu
  • 开始时间 开始时间
P

pyliu

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用Interbase
现在有一个表table1,有三个字段f1(varchar38),f2(varchar10),f3(varchar10)
f1有主索引
我想做一个存储过程,做这样一件事:
生成表table2,与表table1基本一样,只是没有f3(varchar10)字段
数据也完全一样。
谢谢。
 
先健个和表1结构一样的表2
Table2.Active:=True;
Table2.First;
While not Table2.Eof do
begin
Table2.AppendRecord([Table1.FeldbyName(f1),Table1.FeldbyName(f2)]);
Table2.Next;
end;

你试试
 
不用写procedure 这么麻烦把,你先创建table2 ,然后使用Query,
SQl:='insert into table2 select f1,f2 from table1';
execsql;
就ok了。
 
IB 的语法我不太熟悉,但是方法就是这样的:
1、if exists (Select * From SysObjects ... Where ObjName=N'Table2') then
Drop Table Table2 // SQL Server 的语法,如果 Table2 已经存在,就删除它
Create Table Table2 ... // 用 IB 的语法创建 Table2
2、Insert Into Table2 F1, F2
Select F1, F2 From Table1
 
你给分吧!
for Oracle8
create or replace procedure sh(A in char)
is
begin
insert into table2 select f1,f2 from table1;
commit;
end;
 
人家是interbase
 
set term^^;
create procedure test(tabname char(255))
returns i integer;
as
DECLARE VARIABLE cnt INTEGER;
begin
select count(rdb$relation_name) from rdb$relations where rdb$system_flag=0
and rdb$relation_name = :tabname
and rdb$view_source is NULL
into :cnt;
if (cnt<>1) then
begin
create table :tabname (f1(varchar38),f2(varchar10));
i = 1;
end
else
i = 0;
end^^
set term;^^
 
看书最好!因为说起来比较麻烦.
如果用到的数据很多(至少10000条)的话,用存储过程可以提高速度好多呢!
 
多人接受答案了。
 
后退
顶部