declare @minid int
select @minid=min(id) from orderinfo 
declare @str char(500)
set @str='CREATE TABLE [dbo].[OrderInfotemp] ('
+'[id] [int] IDENTITY('+cast(@minid as nvarchar(8))+',1) ,'
+'[kind] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,'
+') ON [PRIMARY]'+'GO'
print @str现在有两个问题
1, exec sp_execute @str 执行之后会产生 过程需要参数 '@handle' 为 'int' 类型 提示
2,怎么让str中的内容与go语句空行,因为 go语法要空行,要不执行不了的
请问这两个问题怎么解决,100分送上

解决方案 »

  1.   

    1.
    我在本机试的没有这样的提示
    2.
    declare @minid int
    select @minid=min(id) from orderinfo 
    declare @str char(500)
    set @str='CREATE TABLE [dbo].[OrderInfotemp] ('
    +'[id] [int] IDENTITY('+cast(@minid as nvarchar(8))+',1) ,'
    +'[kind] [varchar] (8) COLLATE Chinese_PRC_CI_AS NULL ,'
    +') ON [PRIMARY]'+char(10)+'GO'
    或把+'GO'去掉
      

  2.   

    1.应该是你程序调用引起的
    2.exec sp_execute @str只能执行一个批处理语句,所以不能包含GO的,并且@str应定义成nvarchar类型,sp_execute应该是sp_executesql
      

  3.   

    不要滥用 sp_executesql ,sp_executesql 适用于 参数化的查询语句. 才能有效重复使用查询计划
    比如 select * from mytab where id = @id其他情况用 exec().