实际上我想使用存储过程
从表中获取用户名 CREATE OR REPLACE PROCEDURE GetRecord
(
p_ID IN integer ,
p_user OUT VARCHAR2
)
AS
BEGIN
SELECT
USERNAMES
INTO
p_user
FROM tblUsers
WHERE ID = p_ID ;
END GetRecord;
BEGIN
DECLARE A VARCHAR2
EXECUTE GetRecord(21,A);
END
当我运行上述程序时,我遇到了以下错误
Error starting at line : 17 in command -
BEGIN
DECLARE A VARCHAR2
EXECUTE GetRecord(21,A);
END
Error report -
ORA-06550: line 3, column 1:
PLS-00103: Encountered the symbol "EXECUTE" when expecting one of the following:
:= . ( @ % ; not null range default character
The symbol ";" was substituted for "EXECUTE" to continue.
ORA-06550: line 4, column 1:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
begin function pragma procedure subtype type <an identifier>
<a double-quoted delimited-identifier> current cursor delete
exists prior
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
实际上我想使用存储过程
从表中获取用户名答案 0 :(得分:3)
您用于执行程序的代码似乎不正确。这听起来像你想要的
DECLARE
l_usernames tblUsers.usernames%type;
BEGIN
GetRecord( 21, l_usernames );
END;
一般来说,我强烈反对你的命名惯例。使用复数usernames
作为列名是没有意义的。名为GetRecord
的程序不会告诉您它的作用 - GetUsername
会更有意义。您的匿名块似乎也声明了一个存储返回用户名的本地变量a
,从使用有意义的标识符的角度来看也没有意义。
我还建议程序是错误的方法。如果您的目标是返回单个值,请使用函数。函数返回东西,程序没有。函数可以在SQL语句中使用,过程不能。