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不允许自然重复表,因此我尝试在try错误处理上调用此SQL过程,以便在未创建表的情况下将数据添加到已存在的表中。
所以会发生什么呢?我正在复制一个表,然后用sp_rename重命名表,如果表不存在,这可行但如果它存在则会出错,所以在错误上我想只插入一个数据表到另一个但由于某种原因它不工作SQL过程一直说INTO语句是一个语句错误。需要帮忙!!感谢
答案 0 :(得分:0)
if exists (select 1 from information_schema.tables where table_name = 'someTable')
-- do something
else
-- do something else
答案 1 :(得分:0)
我很确定您正在寻找的语法更像是这样:
SELECT * INTO table FROM othertable
答案 2 :(得分: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');