日期:2014-05-18  浏览次数:20404 次

再问一个带参插入的问题
--一种已有商品的新品牌
create   proc   item
@aenames   varchar(15),
@kcnames   varchar(15),
@kenames   varchar(15)
as
exec( 'insert   into   '+   @aenames+ '   values( '+@kcnames+ ', '+@kenames+ ') ');
exec( 'create   table   '+@kenames+ '(
DID   int   not   null   identity(1,1),
DCName   varchar(15)   not   null,
DImage   varchar(50),
DPrice   money   not   null
) ')
go

exec   item   'MobilePhone ', '龙心 ', 'DragonHeart ';

执行后报错如下:
服务器:   消息   128,级别   15,状态   1,行   1
在此上下文中不允许使用   '龙心 '。此处只允许使用常量、表达式或变量。不允许使用列名。
就是插入过程有问题,表能正确的被创建,请问大虾这是为什么呢?


------解决方案--------------------
create proc item
@aenames varchar(15),
@kcnames varchar(15),
@kenames varchar(15)
as
exec( 'insert into '+ @aenames+ ' values( ' ' '+@kcnames+ ' ' ', ' ' '+@kenames+ ' ' ') ');
exec( 'create table '+@kenames+ '(
DID int not null identity(1,1),
DCName varchar(15) not null,
DImage varchar(50),
DPrice money not null
) ')
go
------解决方案--------------------
--try

create proc item
@aenames varchar(15),
@kcnames varchar(15),
@kenames varchar(15)
as
exec( 'insert into [ '+ @aenames+ '] values( ' ' '+@kcnames+ ' ' ', ' ' '+@kenames+ ' ' ') ');
exec( 'create table [ '+@kenames+ '](
DID int not null identity(1,1),
DCName varchar(15) not null,
DImage varchar(50),
DPrice money not null
) ')
go

exec item 'MobilePhone ', '龙心 ', 'DragonHeart ';