2013-07-17 32 views
0
ALTER PROC spTransferDat 
@TableName nvarchar(50) 
AS 
EXEC('SELECT * FROM ClientGroups INTO [' + @TableName + '] '); 




public void SPROC_ExecutionsTransferData() 
     { 
      string tablename = cboNetChannel.SelectedItem.ToString(); 
      SqlConnection sqlConnectionCmdString = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Rick\Documents\Visual Studio 2010\Projects\Server\database\ClientRegit.mdf;Integrated Security=True;User Instance=True"); 

      //Properly just transfer data to already existing table     
      string Command = "spTransferDat" + "'" + tablename + "'"; 

      SqlCommand sqlCommand = new SqlCommand(Command, sqlConnectionCmdString); 


      sqlConnectionCmdString.Open(); 

      sqlCommand.ExecuteNonQuery(); 

      sqlConnectionCmdString.Close(); 
     } 
public void SPROC_ExecutionsTableNaming() 
     { 
      try 
      { 
       string tablename = cboNetChannel.SelectedItem.ToString(); 
       SqlConnection sqlConnectionCmdString = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Users\Rick\Documents\Visual Studio 2010\Projects\Server\database\ClientRegit.mdf;Integrated Security=True;User Instance=True"); 

       //Properly Defines the string for naming the table according to the systems naming scheme 
       string renameCommand = "EXEC sp_rename 'NetworkAccount', " + "'" + tablename + "'"; 

       SqlCommand sqlRenameCommand = new SqlCommand(renameCommand, sqlConnectionCmdString); 


       sqlConnectionCmdString.Open(); 

       sqlRenameCommand.ExecuteNonQuery(); 

       sqlConnectionCmdString.Close(); 
      } 
      catch(Exception myex) 
      { 
       DialogResult QAnswer = MessageBox.Show("Table already exist, Do you want to just add data to table", "Data Management", MessageBoxButtons.YesNo, MessageBoxIcon.Question); 
       //Check for command 
       if (QAnswer == DialogResult.Yes) 
       { 
        //transfer the data to the correct table if table already Exist 
        SPROC_ExecutionsTransferData(); 
       } 
       else if (QAnswer == DialogResult.No) 
       { 
        this.Close(); 
       } 
      } 

     } 

所有的SQL语句都会作为错误返回,SQL不允许自然地重复表,所以我试图在尝试错误处理时调用这个SQL过程来向已经存在的表添加数据,如果表不存在创建。使用SQL来检查表是否存在,如果不存在,则从不同的表中插入数据?

所以会发生什么是我复制一张表,然后用sp_rename重命名表,如果表不存在这个工作,但如果它存在它会出错,所以对错误我想插入所有的数据一个表到另一个表,但由于某种原因,它不工作的SQL过程一直说INTO语句是一个语句错误。需要帮忙!!感谢

+0

你需要一个纯sql的答案?或者你可以通过.net来做到这一点吗? – Botonomous

+0

@shawn所以确认 - 如果表不存在 - 你想做'SELECT INTO',如果表退出 - 你想做'INSERT INTO'? –

+0

我只是试图从表中选择*到另一个表中我已经有能力检查表是否存在自然发生。所以我只需要将此表中的所有数据添加到新指定的表中。但我需要告诉它表名,所以我使用一个参数来捕获表。 – shawn

回答

0

我认为这是正确的代码:

ALTER PROC spTransferDat 
@TableName nvarchar(50) 
AS 
if OBJECT_ID(@TableName) is null 
    EXEC('SELECT * INTO [' + @TableName + '] FROM ClientGroups'); 
else 
    EXEC('insert INTO [' + @TableName + '] select * FROM ClientGroups'); 
+0

不等待让我试试看起来不同的第一个 – shawn

+0

我得到一个错误,说现在表已经存在,而不是仅仅因为某种原因将数据添加到表中 – shawn

+0

我试过但零行返回受影响 – shawn

0
if exists (select 1 from information_schema.tables where table_name = 'someTable') 
    -- do something 
else 
    -- do something else 
+0

我已经知道表存在通过系统的错误,我只是想通过从一个表插入数据到另一个这里给错误的答案给你完整的代码,所以你可以看到我的意思是我可能会混淆的情况 – shawn

0

我相当肯定,你要寻找的语法更像是这样的:

SELECT * INTO table FROM othertable 
相关问题