ORACLE이나 MSSQL이나 프로시져의 파라메터로 문자변수에 숫자 혹은 숫자 변수에 숫자형 문자값을 바꿔서 넘겨 줘도 에러 없으며 숫자와 숫자형 문자간 연산도 정상적으로 처리된다.
1. ORACLE
CREATE OR REPLACE
PROCEDURE PROC_TEST ( P_A IN VARCHAR2
, P_B IN NUMBER
, RTN OUT NUMBER)
AS
BEGIN
RTN := P_A + P_B;
END PROC_TEST;
VARIABLE RTN NUMBER;
EXECUTE PROC_TEST('3', 7, :RTN);
PRINT RTN;
VARIABLE RTN NUMBER;
EXECUTE PROC_TEST(3, '7', :RTN);
PRINT RTN;
2. MSSQL
DROP PROC PROC_TEST;
GO
CREATE PROCEDURE PROC_TEST ( @P_A VARCHAR
, @P_B INT
, @RTN INT OUTPUT)
AS
BEGIN
SET @RTN = @P_A + @P_B;
END
GO
GRANT EXEC
ON PROC_TEST
TO PUBLIC
GO
DECLARE @RTN INT;
EXECUTE PROC_TEST '3', 7, @RTN OUTPUT;
SELECT @RTN;
DECLARE @RTN INT;
EXECUTE PROC_TEST 3, '7', @RTN OUTPUT;
SELECT @RTN;