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;