使用select into参数存储过程

时间:2013-12-04 04:41:47

标签: oracle stored-procedures parameters

我搜索了很多但是找不到答案所以问这个问题

目前我有一张桌子

create table SAM_TEMP
(
col1 number null,
col2 varchar(100) null
)

我正在尝试创建一个存储过程,当我使用列类型创建参数时,如下所示正在工作

CREATE OR REPLACE
PROCEDURE SP_IN_PARAM(
    INPARAM1 IN SAM_TEMP.COL2%TYPE,
    OUTPARAM2 OUT sam_temp.col1%type )
AS
BEGIN
  SELECT col1 INTO OUTPARAM2 FROM SAM_TEMP WHERE COL2=INPARAM1;
END SP_IN_PARAM;

但是当我使用数据类型直接创建参数时如下所示它无法正常工作可以帮助我理解它吗?

CREATE OR REPLACE
PROCEDURE SP_IN_PARAM(
    INPARAM1 IN number,
    OUTPARAM2 OUT varchar(100) )
AS
BEGIN
  SELECT col1 INTO OUTPARAM2 FROM SAM_TEMP WHERE COL2=INPARAM1;
END SP_IN_PARAM;

感谢您的提前帮助

1 个答案:

答案 0 :(得分:1)

您不在数据类型上提供维度,只提供类型名称本身。所以,这应该有效:

CREATE OR REPLACE
PROCEDURE SP_IN_PARAM(
    INPARAM1 IN number,
    OUTPARAM2 OUT varchar )
AS
BEGIN
  SELECT col1 INTO OUTPARAM2 FROM SAM_TEMP WHERE COL2=INPARAM1;
END SP_IN_PARAM;

此外,您通常不应使用VARCHAR,而是使用VARCHAR2。