2011-01-13 3 views
1

私は私は、MySQLに新しいですし、私は手順MySQLで内部テーブルを宣言するには?

CREATE DEFINER=`root`@`localhost` PROCEDURE `MySP`(
    actioncode VARCHAR(5), 
    TNewsID BIGINT 
) 

BEGIN 

IF actioncode = 1 then -- Retrive all from the database -- 
    select * 
    from emp.tbnews; 
elseIF actioncode = 2 then -- Retrive all from the database By NewsID -- 
    select NewsID,NewsSubject,NewsSubjectAR,NewsDetails,NewsDetailsAR,CreatedOn,DisplayOrder, 
      AllowDisplay,img 
    from emp.tbnews 
    Where NewsID=TNewsID; 
elseIF actioncode = 3 then -- fkjskldfjklsdf -- 
    select NewsID,NewsSubject,NewsSubjectAR,NewsDetails,NewsDetailsAR,CreatedOn,DisplayOrder, 
      AllowDisplay,img 
    from emp.tbnews; 

END IF; 
END 
をストアド作る見ることができるように、私は構文

わからないMySQLの

で内部テーブルを定義または宣言する方法を知りたいです

私が本当にしたいことは、私はこの

のようにそれをやっているSQL Serverの中にIF文

前に内部テーブルを宣言することです

私は

IF actioncode = 1 
    Insert into @tbTemp 

後のインサート文を入れたいので、あなたが知っていれば教えてくださいどのように一人一人のために

よろしく。

答えて

4
create temporary table tmp 
(
id int unsigned not null, 
name varchar(32) not null 
) 
engine=memory; -- change engine type if required e.g myisam/innodb 

insert into tmp (id, name) select id, name from foo... ; 

-- do more work... 

select * from tmp order by id; 

drop temporary table if exists tmp; 

又は

create temporary table tmp engine=memory select id, name from foo... ; 

-- do more work... 

select * from tmp order by id; 

drop temporary table if exists tmp; 
+0

COOOOOOOOOLも大変です、問題は解決しました!! – HAJJAJ

0

CREATE TEMPORARY TABLEを意味しますか?これは、ステートメントを実行している接続に固有のメモリ内テーブルです。永続的な接続を実行していない限り、名前の競合に心配はありません。

+0

修正:一時テーブルを作成テーブルがメモリに存在することを意味しません。これは、作成ステートメントの最後にあるtype = MEMORY付録で行います。型を指定しない場合、一時テーブルはMyISAMテーブルになります。通常の表との唯一の違いは、CREATE TEMPORARY TABLEを実行した接続がクローズされたときに一時表が収集されることです(接続のスコープになります)。 – 0xCAFEBABE

関連する問題