为什么我不能在WHERE语句中使用变量?

黎安东

我声明一个变量,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的范围仅适用于:

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;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么不能在此if语句中使用我的变量?

我不能在 jinja 的 if 语句中使用变量

为什么不能在 if 语句中使用空指针?

为什么不能在DELETE语句中使用别名?

为什么最终变量不能在switch语句中使用?

为什么不能在动态SQL的DDL / SCL语句中使用绑定变量?

为什么我们不能在三元语句中使用“pass”?

为什么我们不能在 switch 语句中使用关系表达式?

SwiftUI-为什么我不能在if语句中使用Alert

为什么我不能在C ++中的三元条件语句中使用“ break”语句?

为什么我在If语句中设置的变量不能在javascript中的if语句之外起作用?

为什么我不能在 Visual Studio Code 的 return 语句中使用 EXIT_SUCCESS 而不是 0?

为什么不能在switch语句中声明变量?

为什么不能在if语句中声明变量?

为什么我不能在if-then语句中更改变量的值?

为什么我不能在IF语句中嵌套SUBSTITUTE?

为什么不能在switch语句中使用元组常量作为大小写

我不能在 if 语句中使用字符名称

有什么情况我不能在switch语句中使用'continue'吗?

为什么不能在WHERE子句中使用列别名?

为什么我不能在另一个导入语句中使用作为别名导入的 python 中的模块?

为什么我不能在一行语句中设置T-SQL CONTXT_INFO变量?

为什么我不能在for循环的第一条语句中包含2个变量

为什么我不能在sqlite3中使用WITH语句?

为什么我不能在 Java 中使用像 if-else 语句这样的 (? :) 运算符?

为什么不能在 if....else 中使用 str 语句

为什么我不能在我的代码中使用“ balance ”?

为什么我不能在类方法中使用预定义变量?

为什么我不能在单独的html和js文件中使用全局变量?