我写了一段存储过程==============================================================
alter PROCEDURE sp_Q4
@VEID varchar(10) 
AS
BEGIN
DECLARE @strSQL nvarchar(1000)set @strSQL='CREATE TABLE [UserInfo'+@VEID+']([UserId] [varchar] (10) COLLATEChinese_PRC_CI_AS NOT NULL) ON [PRIMARY]' EXEC(@strSQL)
end
==============================================================我是用exec执行一段字符串写的SQL语句,来创建一个表的。
在一个数据库服务器上执行这个存储过程,没有问题,表都创建了。
但是在另一台数据库服务器上,这个EXEC却不起作用,不报任何错误。但是就是不执行,那是为什么呢?
是有什么设置上的问题吗?

解决方案 »

  1.   

    1、权限有没有问题
    2、少个空格
    3、定义nvarchar(1000) ,常量最好加N'
    alter PROCEDURE sp_Q4
    @VEID varchar(10) 
    AS
    BEGIN
    DECLARE @strSQL nvarchar(1000)set @strSQL=N'CREATE TABLE [UserInfo'+@VEID+N']([UserId] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]' EXEC(@strSQL)
    end
      

  2.   

    set @strSQL=N'CREATE TABLE [UserInfo'+@VEID+N']([UserId] [varchar] (10) COLLATE Chinese_PRC_CI_AS NOT NULL) ON [PRIMARY]'
    refresh看看