-1
を返していないストアドプロシージャです。Javaプログラムから呼び出しているストアドプロシージャです。レコードがデータベースに存在する場合に返します。ここではすべて正常に動作していますが、私はあなたがStored Procedure with a Return Statusを呼び出すようにしようとしている間違っていない場合は、Javaで変数file_generationに戻り値を格納していますし、この変数は常に値1値を返さないSQLサーバーストアドプロシージャ以下の値
USE [esp_server]
GO
/****** Object: StoredProcedure [dbo].[cs_file_generation_lock] Script Date: 3/7/2017 1:26:21 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[cs_file_generation_lock]
@pid INTEGER
AS
BEGIN
DECLARE @RESULT VARCHAR(6);
DECLARE @X_LOCK INTEGER;
DECLARE @records INTEGER;
DECLARE @FLAG INT = 0;
DECLARE @FLAG1 INT = 1;
IF exists (SELECT PID from cs_file_generation_flag)
BEGIN
INSERT INTO cs_file_generation_flag VALUES(4056,@FLAG)
Return @FLAG
END
ELSE
BEGIN
INSERT INTO cs_file_generation_flag VALUES(@pid,@FLAG1)
Return @FLAG1
END
END
Below is my java code
try
{
Connection cn = null;
CallableStatement stmt = null;
try
{
cn = JdbcUtils.getConnection();
long pid = ConfigServer.getPID();
stmt = cn.prepareCall("{call cs_file_generation_lock(?)}");
stmt.setLong(1, pid);
int file_generation = stmt.executeUpdate();
JdbcUtils.commitAndClose(cn, stmt);
if(file_generation == 1)
{
trace1 = TerminalIdTracer.getInstance();
trace1.log(ConfigServerTrace.INFO, "--------------file generation process will start and the file generation value is-- " + file_generation + "process ID :" + pid);
new PreProcess().go(args);
}
else
{
trace1.log(ConfigServerTrace.INFO, "---------------Please wait the other file generation is in process---------------" + file_generation);
}
}
finally
{
JdbcUtils.cleanup(cn, stmt);
}
}
何をしようとしているのか、何が起こっているのか、何が起こるのかについてもっと多くの情報が必要です。サンプルデータと望みの結果は長い道のりになります。 – Siyual