怎样用SQL Server服务器上的存储过程动态建表?(100分)

  • 主题发起人 主题发起人 qj_chen
  • 开始时间 开始时间
Q

qj_chen

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在SQL Server数据库中动态创建一个表和索引,表的名称是工作站端的控件Edit1中的内容。
请教如何写代码?最好用Query,不用StoredProc。请举一例。
 
在query 中的SQL属性中填入:
create [dbo.][表名]
[字段名][类型] null,
[primary]
......

就ok啦
 
但是我要求表名从控件Edit输入!!!
 
[记得给我加分]
看好了

CREATE PROCEDURE YourPro
@YourName char(30) /**你传入的表名**/
as
create table @YourName
(
字段 类型 空与非,
字段 类型 空与非,
字段 类型 空与非,
[primary]

)



 
create table test (test nvarchar(50) null,test1 nvarchar(50) null,test2 nvarchar(50) null)
写成一行的形式,变量传进去就可以了
 
不用StoredProc,Query也有Params参数的啊,
 
用query的话,似乎这样子也可以:
query的sql.text为:
declare @tablename char(30)
set @tablename=:Tablename //或者select @tablename=:tablename
create table @tablename
(field1 char(10) not null, ..., [primary] )

query.parambyname('tablename').asstring:=edit1.text;
query.exesql;
之类的

可以的话记得给我点分
 
大家答的这么好,我还有什么可说
 
to zyzdy:
用您的方法在SQL Server 7.0服务器中执行脚本文件,结果出错:
Server: Msg 170, Level 15, State 1,Procedure MyPro, Line 4
Line 4: Incorrect sysntax near '@MyName'
请指教!
 
1.:field
2.parambyname('field').value:=String(edit1.Text);
3.exesql
 
query.sql.clear;
query.sql.add('create table '+ Edit.text + ' (id char(10),...)');
query.sql.excute;

还有问题吗?
 
to zyzdy:
用您的方法在SQL Server 7.0服务器中执行脚本文件,结果出错:
Server: Msg 170, Level 15, State 1,Procedure MyPro, Line 4
Line 4: Incorrect sysntax near '@MyName'
请指教!

我来跟你讲,
1.建立procedure最好在query analyzer中建立。。
2.@MyName是你传入的参数。。
3.建立后调用(exec MyPro '参数即表名')
 
如果还搞不定打电话给我:

010-6642-9988-1055
 
这样试试:CREATE PROCEDURE YourPro ( @YourName char(30) )as
...................
 
多人接受答案了。
 
后退
顶部