请邹老大来瞅瞅
这是我写的一个存储过程,功能是用建立指定结构的表。
现在为了应用需要,我要在表的结构中增加一个属性列,要来存储该表的名称。
见下面:
问题点数:10、回复次数:4Top
1 楼cooleader320()回复于 2005-05-10 11:59:50 得分 0
CREATE PROCEDURE sp_createcard
@tablename Varchar(30)
AS
BEGIN
exec( 'create table ' + @tablename + '(
cId bigint identity(1,1) primary key, --id
cGoTopTag bigInt default 0, --提前标记
cGoTopTimes int default -1, --提前次数
cUserName varchar(20) default('' ''), --用户名
cCardState int default 1, --帖子状态 ( 0 ->系统帖, 1 ->未结帖, 2 ->已结帖 )
)'
)
ENDTop
2 楼cooleader320()回复于 2005-05-10 12:01:09 得分 0
现在修改如下:
CREATE PROCEDURE sp_createcard
@tablename Varchar(30)
AS
BEGIN
exec( 'create table ' + @tablename + '(
cId bigint identity(1,1) primary key, --id
cGoTopTag bigInt default 0, --提前标记
cGoTopTimes int default -1, --提前次数
cUserName varchar(20) default('' ''), --用户名
cCardState int default 1, --帖子状态 ( 0 ->系统帖, 1 ->未结帖, 2 ->已结帖 )
cTableName Varchar(30) default(@tablename) , ---表的名称,出问题了???
)'
)
END
是不是在存储过程里建立表的时候不能够引用和表结构本身有关的信息,如:表名,字段名
??
或则是里面的局部变量不能是存储过程的参数名??
还是其他什么原因呢??
3QQQQQQQQQQQQQQQQQQQQQQQQQ
Top
3 楼boy6508()回复于 2005-05-13 08:38:12 得分 0
UPTop
4 楼631799(杭州工人)回复于 2005-05-13 09:18:14 得分 10
CREATE PROCEDURE sp_createcard
@tablename Varchar(30)
AS
BEGIN
exec( 'create table ' + @tablename + '(
cId bigint identity(1,1) primary key, --id
cGoTopTag bigInt default 0, --提前标记
cGoTopTimes int default -1, --提前次数
cUserName varchar(20) default('' ''), --用户名
cCardState int default 1, --帖子状态 ( 0 ->系统帖, 1 ->未结帖, 2 ->已结帖 )
cTableName Varchar(30) default ('''+@tablename+''') , ---表的名称,出问题了???
)'
)
END
Top




