Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / вызов процедуры для записи строк из одной таблицы в другую / 23 сообщений из 23, страница 1 из 1
04.05.2018, 16:58
    #39640225
martinezo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
Здравствуйте, подскажите пожалуйста по работе хранимой процедуры,
написал процедуру которая выбирает данные из одной таблицы dbo.SV_FILE (этих данных там сотня),
и записывает их в таблицу dbo.test_table

USE [SVR_FILES]
GO
/****** Object: StoredProcedure [dbo].[addtest] Script Date: 04.05.2018 16:46:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[addtest]
AS
BEGIN
declare @sh varchar (10)
declare @fio varchar (50)
declare @rep_format varchar (10)
select @sh=TD_NUMBER, @fio=reporterfio, @rep_format=ReportFormat from dbo.SV_FILE where TD_NUMBER=5127
insert into dbo.test_table
values (CURRENT_TIMESTAMP, @sh, @fio, @rep_format)
 
END


После отработки процедуры - она записывает только одну строку из dbo.SV_FILE в dbo.test_table
при запуске заново процедуры - записывает еще одну строку в dbo.test_table,
подскажите пожалуйста, как сделать чтобы за один запуск процедуры записывались все строки из dbo.SV_FILE в dbo.test_table ,
а не по одной как это делается сейчас?
Спасибо.
...
Рейтинг: 0 / 0
04.05.2018, 17:01
    #39640226
Кесарь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
martinezo,

values замените на select, который будет не записывать значения в переменные, а давать выборку.
...
Рейтинг: 0 / 0
04.05.2018, 17:02
    #39640228
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
Изучить синтаксис команды insert into ... select ...
...
Рейтинг: 0 / 0
04.05.2018, 17:02
    #39640231
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
martinezo,

почитать внимательнее документацию и понять, что все написанное заменяется одной командой insert... select... без переменных и процедуры.
...
Рейтинг: 0 / 0
04.05.2018, 17:14
    #39640249
martinezo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
через insert .... select я знаю как сделать

интересует именно как реализовать через хранимую процедуру
...
Рейтинг: 0 / 0
04.05.2018, 17:19
    #39640257
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
martinezoчерез insert .... select я знаю как сделать

интересует именно как реализовать через хранимую процедуруВзять и засунуть insert ... select в процедуру.
...
Рейтинг: 0 / 0
04.05.2018, 17:31
    #39640266
martinezo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
написал так:
ALTER PROCEDURE [dbo].[addtest]
AS
BEGIN
declare @sh varchar (10)
declare @fio varchar (50)
declare @rep_format varchar (10)
 
insert into dbo.test_table
 
select REPORT_DATE, TD_NUMBER, reporterfio, ReportFormat from dbo.SVR_FILE where TD_NUMBER=5127
END

после запуска процедуры было написано - команда выполнена успешно, однако в таблицу dbo.test_table ничего не записалось
...
Рейтинг: 0 / 0
04.05.2018, 17:32
    #39640269
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
martinezoпосле запуска процедуры было написано - команда выполнена успешно, однако в таблицу dbo.test_table ничего не записалосьА есть хоть одна причина, почему в таблицу dbo.test_table должно было что-то записаться?
...
Рейтинг: 0 / 0
04.05.2018, 17:40
    #39640279
martinezo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
>>>А есть хоть одна причина, почему в таблицу dbo.test_table должно было что-то записаться?

за этим и написал на форуме, подскажите, что не так, почему не записывается?
...
Рейтинг: 0 / 0
04.05.2018, 17:45
    #39640286
Sergey Sizov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
martinezo>>>А есть хоть одна причина, почему в таблицу dbo.test_table должно было что-то записаться?

за этим и написал на форуме, подскажите, что не так, почему не записывается?Может потому, что записываться нечему? Вы свой
Код: sql
1.
select REPORT_DATE, TD_NUMBER, reporterfio, ReportFormat from dbo.SVR_FILE where TD_NUMBER=5127

хотя бы пробовали выполнять? Если да, то кс каким результатом?
...
Рейтинг: 0 / 0
04.05.2018, 17:45
    #39640287
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
martinezo>>>А есть хоть одна причина, почему в таблицу dbo.test_table должно было что-то записаться?

за этим и написал на форуме, подскажите, что не так, почему не записывается?"Я открыл холодильник, а там нет еды. Подскажите мне, что не так и почему ее там нет".
...
Рейтинг: 0 / 0
04.05.2018, 17:49
    #39640288
martinezo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
Sergey Sizovmartinezo>>>А есть хоть одна причина, почему в таблицу dbo.test_table должно было что-то записаться?

за этим и написал на форуме, подскажите, что не так, почему не записывается?Может потому, что записываться нечему? Вы свой
Код: sql
1.
select REPORT_DATE, TD_NUMBER, reporterfio, ReportFormat from dbo.SVR_FILE where TD_NUMBER=5127

хотя бы пробовали выполнять? Если да, то кс каким результатом?

да выходит 35 строк
...
Рейтинг: 0 / 0
04.05.2018, 17:51
    #39640290
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
Покажите код вызова процедуры. Покажите план выполнения процедуры. Покажите код проверки таблицы dbo.test_table.
...
Рейтинг: 0 / 0
04.05.2018, 17:51
    #39640291
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
martinezoнаписал так:
ALTER PROCEDURE [dbo].[addtest]
AS
BEGIN
declare @sh varchar (10)
declare @fio varchar (50)
declare @rep_format varchar (10)
 
insert into dbo.test_table
 
select REPORT_DATE, TD_NUMBER, reporterfio, ReportFormat from dbo.SVR_FILE where TD_NUMBER=5127
END

после запуска процедуры было написано - команда выполнена успешно, однако в таблицу dbo.test_table ничего не записалосьВ INSERTе всегда пишите в скобках список полей, в которые вставляете.
Это практически закон.
...
Рейтинг: 0 / 0
04.05.2018, 17:52
    #39640293
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
Да! И выбросьте из процедуры все переменные. Зачем они?
...
Рейтинг: 0 / 0
04.05.2018, 18:02
    #39640304
martinezo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
iapmartinezoнаписал так:
ALTER PROCEDURE [dbo].[addtest]
AS
BEGIN
declare @sh varchar (10)
declare @fio varchar (50)
declare @rep_format varchar (10)
 
insert into dbo.test_table
 
select REPORT_DATE, TD_NUMBER, reporterfio, ReportFormat from dbo.SVR_FILE where TD_NUMBER=5127
END

после запуска процедуры было написано - команда выполнена успешно, однако в таблицу dbo.test_table ничего не записалосьВ INSERTе всегда пишите в скобках список полей, в которые вставляете.
Это практически закон.


написал так:
USE [SVR_FILES]
GO
/****** Object: StoredProcedure [dbo].[addtest] Script Date: 04.05.2018 16:46:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[addtest]
AS
BEGIN
 
 
insert into dbo.test_table (dbo.test_table.dt, dbo.test_table.shop, dbo.test_table.shop_name, dbo.test_table.result)
 
select REPORT_DATE, TD_NUMBER, reporterfio, ReportFormat from dbo.SVR_FILE
END

процедура снова ничего не вставила,

хотя просто через запрос

insert into dbo.test_table (dbo.test_table.dt, dbo.test_table.shop, dbo.test_table.shop_name, dbo.test_table.result)
 
select REPORT_DATE, TD_NUMBER, reporterfio, ReportFormat from dbo.SVR_FILE

было вставлено 35 строк, что не нравится процедуре - не знаю
...
Рейтинг: 0 / 0
04.05.2018, 18:29
    #39640317
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
martinezo,

Надо так:
Код: sql
1.
2.
3.
INSERT dbo.test_table(dt,shop,shop_name,result)
SELECT REPORT_DATE,TD_NUMBER,reporterfio,ReportFormat
FROM dbo.SVR_FILE;
...
Рейтинг: 0 / 0
04.05.2018, 18:37
    #39640322
martinezo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
iapmartinezo,

Надо так:
Код: sql
1.
2.
3.
INSERT dbo.test_table(dt,shop,shop_name,result)
SELECT REPORT_DATE,TD_NUMBER,reporterfio,ReportFormat
FROM dbo.SVR_FILE;



написал так:

USE [SVR_FILES]
GO
/****** Object: StoredProcedure [dbo].[addtest] Script Date: 04.05.2018 16:46:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[addtest]
AS
BEGIN
 
INSERT dbo.test_table(dt,shop,shop_name,result)
SELECT REPORT_DATE,TD_NUMBER,reporterfio,ReportFormat
FROM dbo.SVR_FILE;
END



вышло это

Command(s) completed successfully.

но ничего не добавилось
...
Рейтинг: 0 / 0
04.05.2018, 18:39
    #39640323
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
martinezoно ничего не добавилосьЯсен пень. Чтобы добавилось, процедуру надо запустить.
...
Рейтинг: 0 / 0
04.05.2018, 18:55
    #39640329
Andy_OLAP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
martinezo,

После ALTER PROCEDURE [dbo].[addtest] ...как будто здесь был текст этой процедуры.... нужно сделать EXEC [dbo].[addtest]. И все будет хорошо.
...
Рейтинг: 0 / 0
04.05.2018, 18:56
    #39640331
martinezo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
Гавриленко Сергей Алексеевичmartinezoно ничего не добавилосьЯсен пень. Чтобы добавилось, процедуру надо запустить.

))) Спасибо - получилось
...
Рейтинг: 0 / 0
04.05.2018, 19:02
    #39640333
martinezo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
iapmartinezo,

Надо так:
Код: sql
1.
2.
3.
INSERT dbo.test_table(dt,shop,shop_name,result)
SELECT REPORT_DATE,TD_NUMBER,reporterfio,ReportFormat
FROM dbo.SVR_FILE;



Подскажите, пожалуйста, обязательно ли надо было ставить "; " после запроса?
и если несколько запросов идут в процедуре по очереди, их тоже надо разделять точкой с запятой?
Спасибо
...
Рейтинг: 0 / 0
04.05.2018, 19:16
    #39640337
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вызов процедуры для записи строк из одной таблицы в другую
martinezoiapmartinezo,

Надо так:
Код: sql
1.
2.
3.
INSERT dbo.test_table(dt,shop,shop_name,result)
SELECT REPORT_DATE,TD_NUMBER,reporterfio,ReportFormat
FROM dbo.SVR_FILE;




Подскажите, пожалуйста, обязательно ли надо было ставить "; " после запроса?
и если несколько запросов идут в процедуре по очереди, их тоже надо разделять точкой с запятой?
СпасибоПока обязательно только в некоторых случаях.
Но обещают сделать обязательным в следующих версиях.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / вызов процедуры для записи строк из одной таблицы в другую / 23 сообщений из 23, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]