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 过程,以便在未创建表的情况下将数据添加到已经存在的表中。

所以发生的事情是我正在复制一个表,然后用 sp_rename 重命名该表,如果该表不存在,这可行,但如果它存在,它将出错,所以在出现错误时,我只想将一个表中的所有数据插入另一个表但由于某种原因,它无法正常工作,SQL 过程一直说 INTO 语句是语句错误。需要帮忙!!谢谢

4

3 回答 3

0
if exists (select 1 from information_schema.tables where table_name = 'someTable')
    -- do something
else
    -- do something else
于 2013-07-17T20:29:53.557 回答
0

我相当确定您正在寻找的语法更像是这样的:

SELECT * INTO table FROM othertable
于 2013-07-17T20:34:29.960 回答
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');
于 2013-07-17T20:36:51.527 回答