CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST" AS DECLARE v_UserID VARCHAR2(10); v_PWD VARCHAR2(128); BEGIN v_Temp VARCHAR2(128); SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID; DBMS_OUTPUT.PUT_LINE(v_Temp); END;为什么这样还是不对。
TO:Singtoyou(我爱Oracle) 我改成这样还是不可以。 CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST" AS v_UserID VARCHAR2(10); v_PWD VARCHAR2(128); BEGIN v_Temp VARCHAR2(128); SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID; DBMS_OUTPUT.PUT_LINE(v_Temp); END;BEGIN HRM_TEST 'A','A'; END; * ERROR 位于第 1 行: ORA-06550: 第 1 行, 第 16 列: PLS-00103: 出现符号 "A"在需要下列之一时: :=.(@%;
CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST" AS v_UserID VARCHAR2(10); v_PWD VARCHAR2(128); v_sql varchar2(30000); BEGIN v_Temp VARCHAR2(128); v_sql := 'SELECT '|| USER_PWD ' INTO ' || v_Temp || 'FROM HRM_USER WHERE USER_ID=' || v_UserID; execute immediate (v_sql); // 如不对,将execute immediate两个词调顺序 DBMS_OUTPUT.PUT_LINE(v_Temp); END;
CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST"(v_UserID in varchar2,v_PWD out varchar2) AS v_Temp VARCHAR2(128); BEGIN SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID; DBMS_OUTPUT.PUT_LINE(v_Temp); END;
你是要传入两个参数吧,这样 CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST"(v_UserID HRM_USER.user_id%type,v_PWD HRM_USER.user_pwd%type) is v_Temp HRM_USER.user_pwd%type; BEGIN SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID; DBMS_OUTPUT.PUT_LINE(v_Temp); END; execute HRM_TEST('a','a');
你是要传入两个参数吧,这样 CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST"(v_UserID HRM_USER.user_id%type,v_PWD HRM_USER.user_pwd%type) is v_Temp HRM_USER.user_pwd%type; BEGIN SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID; DBMS_OUTPUT.PUT_LINE(v_Temp); END; execute HRM_TEST('a','a');
这样就行了!变量定义不能在begin里面。 CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST" AS v_UserID VARCHAR2(10); v_PWD VARCHAR2(128); v_Temp VARCHAR2(128); BEGIN SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID; DBMS_OUTPUT.PUT_LINE(v_Temp); END;
存储过程和PL/SQL语法不一样吗 ?
? 存储过程属于PL/SQL块 的一种
同意ATCG(ATCG),所有变量必须在declare与begin之间定义
很奇怪,你怎么会把声明变量写道begin后面?
声明的变量中不能定义长度,改为 CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST" AS (v_UserID VARCHAR2,v_PWD VARCHAR2) 就可以了
DECLARE
v_UserID VARCHAR2(10);
v_PWD VARCHAR2(128);
BEGIN
v_Temp VARCHAR2(128);
SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID;
DBMS_OUTPUT.PUT_LINE(v_Temp);
END;为什么这样还是不对。
我改成这样还是不可以。
CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST" AS
v_UserID VARCHAR2(10);
v_PWD VARCHAR2(128);
BEGIN
v_Temp VARCHAR2(128);
SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID;
DBMS_OUTPUT.PUT_LINE(v_Temp);
END;BEGIN HRM_TEST 'A','A'; END; *
ERROR 位于第 1 行:
ORA-06550: 第 1 行, 第 16 列:
PLS-00103: 出现符号 "A"在需要下列之一时:
:=.(@%;
v_UserID VARCHAR2(10);
v_PWD VARCHAR2(128);
v_sql varchar2(30000);
BEGIN
v_Temp VARCHAR2(128);
v_sql := 'SELECT '|| USER_PWD ' INTO ' || v_Temp || 'FROM HRM_USER WHERE USER_ID=' || v_UserID;
execute immediate (v_sql); // 如不对,将execute immediate两个词调顺序
DBMS_OUTPUT.PUT_LINE(v_Temp);
END;
v_Temp VARCHAR2(128);
BEGIN
SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID;
DBMS_OUTPUT.PUT_LINE(v_Temp);
END;
CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST"(v_UserID HRM_USER.user_id%type,v_PWD HRM_USER.user_pwd%type)
is
v_Temp HRM_USER.user_pwd%type;
BEGIN
SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID;
DBMS_OUTPUT.PUT_LINE(v_Temp);
END;
execute HRM_TEST('a','a');
CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST"(v_UserID HRM_USER.user_id%type,v_PWD HRM_USER.user_pwd%type)
is
v_Temp HRM_USER.user_pwd%type;
BEGIN
SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID;
DBMS_OUTPUT.PUT_LINE(v_Temp);
END;
execute HRM_TEST('a','a');
v_Temp VARCHAR2(128);
我把他去掉就可以了.
我不知道为什么这样?
CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST" AS
v_UserID VARCHAR2(10);
v_PWD VARCHAR2(128);
v_Temp VARCHAR2(128);
BEGIN
SELECT USER_PWD INTO v_Temp FROM HRM_USER WHERE USER_ID=v_UserID;
DBMS_OUTPUT.PUT_LINE(v_Temp);
END;
CREATE OR REPLACE PROCEDURE "VISION"."HRM_TEST" AS
(v_UserID VARCHAR2,v_PWD VARCHAR2)
就可以了
to:xinpingf(白开心)
那么我想定义一个局部变量怎么定义?
to:xinpingf(白开心)
那么我想定义一个局部变量怎么定义?