存儲過程中創建表
把創建語句拼成字元串 存儲過程中用exec去執行創建
⑵ mysql 在存儲過程中創建表格
DELIMITER$$
USE`test`$$
DROPPROCEDUREIFEXISTS`p_create_table`$$
CREATEDEFINER=`root`@`localhost`PROCEDURE`p_create_table`()
BEGIN
DECLAREtableNameVARCHAR(100);
DECLAREtable_nameVARCHAR(100);
DECLAREmonthIntINTDEFAULT1;
DECLAREmonthStrVARCHAR(16);
DECLAREtableHeaderVARCHAR(16);
DECLAREtableBodyVARCHAR(255);
DECLAREdropTableStrVARCHAR(255);
DECLAREsqlStrVARCHAR(1000);
SETtableName=CONCAT('test_',DATE_FORMAT(NOW(),'%Y'));
SETtableHeader='CREATETABLE';
SETtableBody='(`id`INT(11)NOTNULLAUTO_INCREMENT,`name`VARCHAR(10),PRIMARYKEY(`id`))ENGINE=INNODBDEFAULTCHARSET=utf8;';
WHILEmonthInt<=12DO
IFmonthInt<10THEN
SETmonthStr=CONCAT('0',monthInt);
ELSE
SETmonthStr=CONCAT(monthInt);
ENDIF;
SETtable_name=CONCAT(tableName,monthStr);
SETdropTableStr=CONCAT('DROPTABLEIFEXISTS',table_name);
SETsqlStr=CONCAT(tableHeader,table_name,tableBody);
SELECTdropTableStrINTO@dropTableStr;
SELECTsqlStrINTO@sqlStr;
BEGIN
PREPAREstepDropExistTableFROM@dropTableStr;
EXECUTEstepDropExistTable;
PREPAREstepCreateTbaleFROM@sqlStr;
EXECUTEstepCreateTbale;
END;
SETmonthInt=monthInt+1;
ENDWHILE;
END$$
DELIMITER;
⑶ 如何用存儲過程動態創建SQL Server 數據表
你指的是動態創建臨時表吧?可以使用如下的方法(例如):CREATE
TABLE
#MyTempTable
(cola
INT
PRIMARY
KEY)INSERT
INTO
#MyTempTable
VALUES
(1)在表名前面加"#"表示創建臨時表,在程序結束後會自動刪除臨時表,而且每個客戶端實際不是使用同一個臨時表,而且,在程序結束後會自動釋放臨時表。我想你要的應該是這個,對嗎?
⑷ oracle存儲過程創建表
CREATE OR REPLACE PROCEDURE list_xs_name as
str_sql varchar2(2000);
begin
str_sql := 'create global temporary table xs_name (xh int,name varchar2(255),kc varchar2(255),fs int) on commit preserve rows';
execute immediate str_sql;
str_sql := 'select * from xs_name';
execute immediate str_sql;
dbms_output.put_line(str_sql);
END;
⑸ SQL server 存儲過程動態創建表 不知如何著手
既然是生成新表,你可以定義一個參加拼湊sql語句,游標抓出proName的值,作為表名,sql_str = 'create table '+表名+'(colname varchar(100))',然後游標抓出txtLog的值,作為表裡的值,這時候sql_str+='insert into 表名 values('+txtLog的值+')'
⑹ 關於在存儲過程中建立臨時表
你試過了嗎?
這樣建是允許的!!不過這樣建的表屬於本地臨時表。當存儲過程完成時,將自動刪除在存儲過程中創建的本地臨時表。
可能是被刪了你沒看到
--------
CREATE
PROCEDURE
dbo.Test2
AS
CREATE
TABLE
#t(x
INT
PRIMARY
KEY);
INSERT
INTO
#t
VALUES
(2);
SELECT
Test2Col
=
x
FROM
#t;
GO
CREATE
PROCEDURE
dbo.Test1
AS
CREATE
TABLE
#t(x
INT
PRIMARY
KEY);
INSERT
INTO
#t
VALUES
(1);
SELECT
Test1Col
=
x
FROM
#t;
EXEC
Test2;
GO
CREATE
TABLE
#t(x
INT
PRIMARY
KEY);
INSERT
INTO
#t
VALUES
(99);
GO
EXEC
Test1;
GO
這是個例子你可以運行了看看結果!!
⑺ oracle 怎麼在存儲過程中創建一個臨時表,在裡面插入數據,再查找這個臨時表的所有數據,最後drop這個表。
Oracle
的臨時表的
處理機制,
和
SQL
Server
的不一樣。
假如你的臨時表的結構不是每次執行都發生變化的話
那麼就是事先
通過
CREATE
GLOBAL
TEMPORARY
TABLE
語句,把臨時表建立好。
存儲過程裡面,就根據需要,
執行
INSERT
/
SELECT
之類的操作就可以了
⑻ oracle存儲過程中建表
首先根據需求,想好需要建哪些欄位,哪些是主鍵,建在哪個表空間下,另外欄位類型也要考慮好,因為一旦建成表往裡面插入數據後,欄位類型就不容易更改了
表建成之後,如果數據量很大,應該考慮建立針對某欄位的索引。
⑼ 如何在Oracle的存儲過程中建表啊
可以在存儲過程中使用execute immediate 'sql';子句來創建表,例如Execute Immediate 'create table test(id int)';