达梦数据库存储过程中用变量做from的表名
时间: 2023-04-10 10:04:28 浏览: 106
可以使用动态SQL语句来实现,在存储过程中使用EXECUTE IMMEDIATE语句,将动态SQL语句作为参数传入,从而实现使用变量作为表名的功能。以下是一个示例代码:
CREATE OR REPLACE PROCEDURE dynamic_from_table (p_table_name IN VARCHAR2)
IS
v_sql VARCHAR2(200);
BEGIN
v_sql := 'SELECT * FROM ' || p_table_name;
EXECUTE IMMEDIATE v_sql;
END;
在调用存储过程时,将需要使用的表名作为参数传入即可:
EXEC dynamic_from_table('my_table');
相关问题
hue中用live sql delete 表名 与 drop表名的区别
在Hue中,使用Live SQL删除表名和删除表名的区别如下:
1. Delete表名:这会删除表中的所有数据,但保留表结构。也就是说,表仍然存在,只是数据被清空了。如果您想保留表结构并删除其中的数据,则可以使用此命令。
2. Drop表名:这将删除整个表,包括表结构和其中的所有数据。如果您想完全删除表,包括表结构和其中的所有数据,则可以使用此命令。
因此,如果您只想删除表中的数据而保留表结构,则应使用Delete表名命令。如果您想完全删除表,则应使用Drop表名命令。
oracle存储过程中用临时表
在Oracle存储过程中,可以使用临时表来临时存储数据。临时表是在会话级别存在的表,数据只在当前会话有效,会话结束后自动删除。
下面是一个使用临时表的示例存储过程:
```sql
CREATE OR REPLACE PROCEDURE my_procedure AS
-- 声明临时表
TEMP_TABLE_NAME VARCHAR2(30) := 'TEMP_TABLE';
BEGIN
-- 创建临时表
EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE ' || TEMP_TABLE_NAME || ' (id NUMBER, name VARCHAR2(50)) ON COMMIT PRESERVE ROWS';
-- 插入数据到临时表
EXECUTE IMMEDIATE 'INSERT INTO ' || TEMP_TABLE_NAME || ' VALUES (1, ''John'')';
EXECUTE IMMEDIATE 'INSERT INTO ' || TEMP_TABLE_NAME || ' VALUES (2, ''Jane'')';
-- 使用临时表中的数据进行其他操作
-- ...
-- 删除临时表
EXECUTE IMMEDIATE 'DROP TABLE ' || TEMP_TABLE_NAME;
END;
/
```
在上述示例中,临时表 `TEMP_TABLE` 在存储过程的执行期间存在。你可以根据需要定义临时表的结构,并在存储过程中使用它来存储临时数据。最后,记得在存储过程结束时删除临时表,以释放资源。