[英]Why I can not use my variable in WHERE statement?
我聲明了一個變量user_name
,以便其他人可以更改它以在他們的筆記本電腦上運行我的腳本。 這里C##AKIRA
是我在 SQL Plus 中創建的帳戶。
DECLARE
user_name varchar2(20);
BEGIN
user_name := 'C##AKIRA';
END;
當我跑
SELECT
table_name
FROM
all_tables
WHERE
owner = user_name
Oracle 返回錯誤ORA-00904: "USER_NAME": invalid identifier
。 另一方面,當我跑步時效果很好
SELECT
table_name
FROM
all_tables
WHERE
owner = 'C##AKIRA'
你能詳細說明一下這個問題嗎?
-- Declare a variable called 'user_name'
DECLARE
user_name varchar2(20);
BEGIN
user_name := 'C##AKIRA';
END;
-- Drop a table of it already exists
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE works_in';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE != -942 THEN
RAISE;
END IF;
END;
-- Create a table called `works_in`
CREATE TABLE works_in (
coded NUMBER(2),
codew NUMBER(2),
datewi DATE,
hourcount NUMBER(2),
PRIMARY KEY (coded, codew, datewi),
FOREIGN KEY (coded) REFERENCES doctors (coded),
FOREIGN KEY (codew) REFERENCES wards (codew)
);
SELECT
table_name
FROM
all_tables
WHERE
owner = user_name
變量 user_name 的 scope 僅適用於:
DECLARE
user_name varchar2(20);
BEGIN
user_name := 'C##AKIRA';
END;
您必須僅在您將使用的 pls 方法中聲明變量。
像這樣:
-- Declare a variable called 'user_name'
DECLARE
user_name varchar2(20);
v_table_name varchar2(100);
BEGIN
user_name := 'C##AKIRA';
SELECT
table_name
into v_table_name
FROM
all_tables
WHERE
owner = user_name
and rownum = 1
;
END;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.