执行存储过程和sql的权限都是一样的吧?
建表改字段,属于ddl
而一般的増删改是dml搜到一个例子: http://bbs.csdn.net/topics/10411998
CREATE PROCEDURE dbo.createtbl (@TableName varchar(10)) as
exec('CREATE TABLE ['+@TableName+'] ([title] [varchar](20) NOT NULL)')
go你是建表没问题,修改结构才不行?
干脆一次性建好所有字段

解决方案 »

  1.   


    能一次性建好,当然一次性建好了,问题就是在于不能一次性建好啊。需要删除和增加字段,我现在是在delphi里增删字段,但是想通过存储过程实现。
      

  2.   

    增删字段,实际执行时,系统可能会把原有数据来回倒腾的
    是不是这种机制决定了不允许存储过程来执行?
    也因为这个机制,你一个个字段的修改,可能效率太低:倒腾n遍通过程序每次发alter的sql,应该能实现吧——也是要倒腾n遍
      

  3.   


    能一次性建好,当然一次性建好了,问题就是在于不能一次性建好啊。需要删除和增加字段,我现在是在delphi里增删字段,但是想通过存储过程实现。这种,可能一次性建一个完整的表结构
    然后把旧表的记录里需要的字段一次性导回来
    再truncate旧表
    最后把新表改名为旧表
    效率才是最高的
      

  4.   

    oracle  里我这有写过这样的存储过程 执行没有问题, 你这里直接在SQL 里执行这个过程试试
      

  5.   

    其实,我觉得你只要在你的EXEC语句后面加个GO就可以了。