使用 JDBC 驱动程序从 Java 中声明和使用 t-sql 变量

Mad*_*ena 1 java t-sql sql-server jdbc

我正在尝试从 sql 服务器上的 java 客户端运行这个 sql 脚本。

DECLARE @CON_NAME VARCHAR(100);
DECLARE @COMMAND VARCHAR(200);

SELECT @CON_NAME=NAME FROM sys.key_constraints WHERE  [type] = 'PK' AND [parent_object_id] = Object_id('dbo.MY_TABLE');
SELECT @COMMAND=CONCAT('ALTER TABLE MY_TABLE DROP CONSTRAINT ', @CON_NAME);
SELECT @COMMAND;
EXEC (@COMMAND);
Run Code Online (Sandbox Code Playgroud)

java客户端所做的是一行一行地运行脚本。

我收到以下异常:

com.microsoft.sqlserver.jdbc.SQLServerException: Must declare the scalar variable "@CON_NAME".
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

And*_*eas 5

不要逐行运行脚本,而是将整个脚本作为一个语句发送。

单独运行每一行,意味着您正在运行多个脚本,就像您将每一行放在单独的 .sql 文件中一样。

DECLARE'd 变量是脚本的本地变量,因此单独运行这些行是没有意义的。