2017-03-20 13 views
-1

に一つだけのテーブルを作成することは、同じ手順を実行しながら、数回など、一度だけのテーブルを作成することが可能です:ストアドプロシージャ

create procedure grg 
    (@firstname varchar(100), 
    @lastname varchar(100), 
    @dob date, 
    @loginID varchar(100), 
    @password varchar(100), 
    @email varchar(100), 
    @SSN varchar(11) 
    ) 
as 
begin 
    create table............ <- only once 

    select 
     @firstname, @lastname, 
     @dob, @loginID, @password, @email, 
     @SSN 

    If(.....) 
+2

を以下試してみてください。 –

答えて

0

うんSQLであなただけのハッシュでそれらを接頭辞一時テーブルを使用することができます。

これらのテーブルは、あなたが本当にテーブルの作成を処理するストアドプロシージャをしたいなら、あなたは上の表を作成することができます


現在のセッションに存在することになりますストアドプロシージャの定義エラーが発生しないように、テーブルがすでに存在するかどうかを確認してください。

CREATE PROCEDURE XX 
AS 
    BEGIN 
     IF EXISTS (SELECT * FROM sysobjects WHERE name = <table_name>) 
     BEGIN 
      <---INSERT CREATE TABLE SCRIPT HERE----> 
     END 

    <---POPULATE HERE---> 


    END 
+0

しかし、私はテーブルを再作成せずに、以前に挿入されたすべてのデータを失うことなく、同じ一時テーブルにデータを挿入できるようにしたい – user7364229

+0

あなたの挿入には前回のプロシージャ実行時のデータが必要ですか? –

+0

はい。パスワードを変更できるようにするには、ユーザにサインアップして再度ログインできるようにする必要があります。 – user7364229

1

あなたはテーブルが既にそれは警告ではないエラーが表示されますが存在する場合に注意してくださいCREATE TABLE IF NOT EXISTS

を使用することができます。

この警告は無視できます。警告を一時的に無効にする場合は、次のようにしてください。

SET sql_notes = 0; 
CREATE TABLE IF NOT EXISTS 
SET sql_notes = 1; 
0

使用しているデータベースであなたの質問にタグを

CREATE PROCEDURE grg 
(@firstname VARCHAR(100), 
@lastname VARCHAR(100), 
@dob  DATE, 
@loginID VARCHAR(100), 
@password VARCHAR(100), 
@email  VARCHAR(100), 
@SSN  VARCHAR(11) 
) 
AS 
    BEGIN 
     IF NOT EXISTS 
     (
      SELECT * FROM sysobjects WHERE name = 'myTable' AND xtype = 'U' 
     ) 
      BEGIN 
       CREATE TABLE myTable(Name VARCHAR(64) NOT NULL); 
      END; 

     SELECT * FROM myTable; 
    END; 
関連する問題