저장 프로 시저T-SQL 저장 프로시 저는 코드에서 null을 반환하지만 콘솔에서 작동합니다.
CREATE procedure [dbo].[get_unique_identifier]
AS
DECLARE @ret_val INT
UPDATE seq SET @ret_val = id = id + 1
RETURN @ret_val
단일 int 열과 단일 행을 가진 테이블 (seq)을 쿼리하고 값을 증가시킨 다음 반환합니다. 간단히 말해서 PostgreSQL 시퀀스를 시뮬 레이팅하는 것입니다. ID 열은 작업을 수행하지 않습니다. 어쨌든 이것은 SQL Management Studio에서 잘 작동합니다. SQL Management Studio에서는
DECLARE @returned INT
EXEC @returned = get_unique_identifier
SELECT @returned
의 순차적 실행으로 예상되는 결과가 생성됩니다. 불행히도, 나는
OdbcCommand command = new OdbcCommand("get_unique_identifier");
command.CommandType = CommandType.StoredProcedure;
OdbcParameter return_param = new OdbcParameter("@RETURN_VALUE", OdbcType.BigInt);
return_param.Direction = ParameterDirection.ReturnValue;
command.Parameters.Add(return_param);
Util.SQLExecuteParameterizedNonQuery(command);
Console.WriteLine(command.Parameters["@RETURN_VALUE"].Value.ToString());
에서 작업하는 응용 프로그램에서 반환 된 값을 얻는 것처럼 보일 수 없습니다. 출력은 빈 문자열이지만 값 자체는 DBNull.Value
입니다. OdbcType.BigInt
는 제가하고있는 몇 가지 테스트에서 남겨 둡니다. 처음에는 Int
이었습니다.
편집 : 이것은 분명히 ODBC의 버그입니다. 해결 방법은 아래에 게시되어 있습니다. do가없는 경우 ODBC를 사용하지 마십시오.
당신이 옳은 것처럼 보입니다. :(방금 SqlClient를 시도해 보았습니다. 이제 ODBC에 대한 해결책을 찾아야합니다. – dandan78
sp : – dandan78
에서'SELECT @ ret_val'로'RETURN @ ret_val'을 변경하여 작동하도록했습니다. 테이블 결과를 반환하십시오. –