我有一个使用ant执行的.sql文件,当我用标签执行它时我收到了不同的输出,就像我使用调用“sqlcmd”时一样。
sql标签输出:
[sql] Executing resource: C:\SqlTesting\TestScriptDependencies\Executor.sql
[sql] Failed to execute: Use Library Exec CallSelectSP
[sql] com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name'Libraty.dbo.libraryDocumentType'.
[sql] 0 of 1 SQL statements executed successfully
exec标签输出:
[exec] First SP
[exec] Msg 208, Level 16, State 1, Server MyPC-PC, Procedure getFirstDocumentType, Line 3
[exec] Invalid object name 'Libraty.dbo.libraryDocumentType'.
[exec] Second SP
[exec] Msg 208, Level 16, State 1, Server MyPC-PC, Procedure badSP, Line 3
[exec] Invalid object name 'Libraty.dbo.libraryDocumentType'.
这是.sql文件。
Print 'First SP'
Exec getFirstDocumentType
Print 'Second SP'
Exec badSP
Go
我想知道它是否是一种SQL标记重现与EXEC标记相同的输出。
感谢。
答案 0 :(得分:1)
看起来第一个是通过jdbc将整个脚本作为单个批处理提交。而第二个似乎是通过sqlcmd发送每个sql语句 - 因此print语句成功(并导致同步输出 - 这并不总是保证print - raiserror(str, 10, 1)
with nowait;是及时消息的唯一保证)和尝试进行两次sp调用,每次调用都会产生自己的(sql)错误。