使用 ANT 的 sql 事务中的多个 CREATE



在Ant事务中使用sql似乎不允许您在每个事务中执行多个CREATE语句,因此我通过将每个CREATE语句分离到单独的文件中来解决这个问题。我的构建脚本看起来像这样。

<sql
    driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    url="jdbc:sqlserver://${dbserver}"
    userid="${username}"
    password="${password}"
>
    <transaction>use master</transaction>       
    <transaction>
        IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'${dbname}')
        DROP DATABASE [${dbname}]
    </transaction>
    <transaction>CREATE DATABASE [${dbname}]</transaction>
    <transaction>use [${dbname}]</transaction>
    <transaction src="${sqlscripts}mySproc.sql" />
</sql>

问题是我现在需要创建一个使用临时表的存储过程,但是构建脚本不会在一个事务中这样做。

CREATE PROCEDURE [dbo].[MySproc] 
    @Username varchar(128)
AS
BEGIN
    CREATE TABLE #TEMP
    (
        Id              int,
        Description     nvarchar(max)
    );
    RETURN 1
END
上面是我的程序的简化版本,Ant脚本抛出一个错误,因为在一个事务中使用两个CREATE周围有什么吗?

解决方法是添加

delimiter="//" 

到你的SQL标签。

<sql
    driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    url="jdbc:sqlserver://${dbserver}"
    userid="${username}"
    password="${password}"
    delimiter="//" 
>
...
</sql>

相关内容

  • 没有找到相关文章

最新更新