请教 是否可以在存储过程中动态创建表?感谢您的参与!(50分)

  • 主题发起人 主题发起人 huawdg
  • 开始时间 开始时间
H

huawdg

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在存储过程中动态创建表,表的名称由外部作为参数传入。
 
这种操作都需要在存储过程中使用动态SQL语句的作法。
表名作为参数时,你在存储过程中需要动态组成建表语句,而不能以参数的方式代入。
看你用什么样的数据库。
oracle: dbms_sql系统包
sql server: 好象是直接exec
 
谢谢armyjiang,请问具体应该怎么做?
我用的是Interbase,您也可以用熟悉的数据库为我举个例子。
 
只是示意:
传入参数:istr : tabname(f1 number not null,f2 char(20) not null)
在存储过程中,
tmpstr : 'create table ' + istr
oracle: dbms_sql.open, dbms_sql.parse, dbms_sql.execute, dbms_sql.close
sql server: exec tmpstr
 
CREATE PROCEDURE [DyTab]
@TabName varchar(20)
as
Exec('Create Table dbo.' + @TabName + ' (ID int NOT NULL, NAME Char(10) Null)')
go
 
存储过程 CreateTalbe(@TableName Varchar(30))
Exec ( 'Create Table '+@TableName+' (Code Varchar(6))'

就可以了
 
谢谢大家的参与!
我失望地告诉大家,经过再次仔细查阅Interbase文档,它竟然不支持这样的语句。
看来我要改行了。
 
后退
顶部