Fra*_* R. 1 mysql sql sql-server oracle informix
在SQL存储过程中,我希望能够构造表名并创建它.
示例:我刚刚登录公司03下的数据库,并且客户表不存在,所以我想要proc CREATE TABLE CUSTOMER03.
有没有一种方式来append company_id char(2)给CUSTOMER它喂的CREATE TABLE声明?也许就像
CREATE TABLE $tablename or $tablename+company_id?
Run Code Online (Sandbox Code Playgroud)
在Oracle中,语法类似于
BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE CUSTOMER_'||v_company_id||' (..)';
END;
Run Code Online (Sandbox Code Playgroud)
然而,这可能是一个非常糟糕的主意.在线下六个月,您需要在表格中添加一列,您需要确定需要将哪些表添加到表中.
此外,Oracle中的存储过程需要一个固定的表名(现有表),或者您必须通过动态SQL引用所有内容,这很痛苦.
最好使用company_id作为属性的单个customer表.然后使用细粒度访问控制来安全地过滤company_id,以控制谁看到公司的数据.
| 归档时间: |
|
| 查看次数: |
148 次 |
| 最近记录: |