Вложенный SQL в C# - PullRequest
       3

Вложенный SQL в C#

0 голосов
/ 15 апреля 2020

Я пытался адаптировать решение из Понимание вложенного SQL в C# Ответить 4. Но это не работает. Я не могу найти ошибку. Подумайте, что оператор не может использовать параметр в качестве части имени таблицы.

 string srcqry = @"USE [" + TableName+ "] " +
                            @"select TABLE_NAME from [INFORMATION_SCHEMA].[TABLES]";
        using (SqlConnection srccon = new SqlConnection(cs))
        using (SqlCommand srccmd = new SqlCommand(srcqry, srccon))
        {
            srccon.Open();
            using (SqlDataReader src = srccmd.ExecuteReader())
            {
                string insqry = @"USE [" + TableName+ "] " + "ALTER SCHEMA "+SchemaNameNew+" TRANSFER [dbo].@tabelle";

                // create new connection and command for insert:
                using (SqlConnection inscon = new SqlConnection(cs))
                using (SqlCommand inscmd = new SqlCommand(insqry, inscon))
                {
                    inscmd.Parameters.Add("@tabelle", SqlDbType.NVarChar, 80);
                    inscon.Open();

                    while (src.Read())
                    {
                        inscmd.Parameters["@tabelle"].Value = src["TABLE_NAME"];
                        inscmd.ExecuteNonQuery();
                    }
                }
            }
        }

Я получил ошибку, что оператор неверен в области @tabelle. Есть идеи, почему это не сработает? Спасибо

1 Ответ

0 голосов
/ 16 апреля 2020

Я нашел рабочее решение.

                while (src.Read())
                {
                    var table= src["TABLE_NAME"];
                    var con = new System.Data.SqlClient.SqlConnection(cs);
                    con.Open();
                    var cmd = new System.Data.SqlClient.SqlCommand();
                    cmd.Connection = con;
                    cmd.CommandType = CommandType.Text;
                    cmd.CommandText = @"USE [" + dbname+ "] " + "ALTER SCHEMA " + schemaname+ " TRANSFER [dbo]."+table;
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...