powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / сложная процедура
25 сообщений из 36, страница 1 из 2
сложная процедура
    #38312896
Nawy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот такая псевдопроцедура:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE addWeight
	@weight INT,
	@name VARCHAR(40),
        @column VARCHAR(40),
AS
INSERT INTO TWeight(time, file_id)
VALUES (@weight, SELECT TOP 1 @column FROM @name ORDER BY @column DESC;);


Подскажите как результат запроса SELECT TOP 1 @column FROM @name ORDER BY @column DESC; записать в поле file_id таблицы TWeight.
Подскажите как это сделать без программы на ЯП, в чистом T-SQL.
...
Рейтинг: 0 / 0
сложная процедура
    #38312909
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nawy, тема "ТОП 10" вопрос номер 6
...
Рейтинг: 0 / 0
сложная процедура
    #38312913
Фотография Сергей Викт.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NawyВот такая псевдопроцедура:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE addWeight
	@weight INT,
	@name VARCHAR(40),
        @column VARCHAR(40),
AS
INSERT INTO TWeight(time, file_id)
VALUES (@weight, SELECT TOP 1 @column FROM @name ORDER BY @column DESC;);


Подскажите как результат запроса SELECT TOP 1 @column FROM @name ORDER BY @column DESC; записать в поле file_id таблицы TWeight.
Подскажите как это сделать без программы на ЯП, в чистом T-SQL.
Что-то типа такого, наверное
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE PROCEDURE addWeight
	@weight INT,
	@name VARCHAR(40),
        @column VARCHAR(40)
AS
DECLARE @sql varchar(max)
SET @sql=N'
INSERT INTO TWeight(time, file_id)
SELECT '+CONVERT(varchar,@weight)+', (SELECT TOP 1 '+CONVERT(varchar,@column)+' FROM '+CONVERT(varchar,@name)+' ORDER BY '+CONVERT(varchar,@column)+' DESC)';
EXEC(@sql)
...
Рейтинг: 0 / 0
сложная процедура
    #38313046
Владимир Затуливетер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Викт.
Код: sql
1.
CONVERT(varchar,@column) CONVERT(varchar,@name)


тут можно не конвертить varchar в varchar :)
...
Рейтинг: 0 / 0
сложная процедура
    #38313053
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир ЗатуливетерСергей Викт.
Код: sql
1.
CONVERT(varchar,@column) CONVERT(varchar,@name)



тут можно не конвертить varchar в varchar :)VARCHAR(40) преобразуется в VARCHAR(30), однако!
Кто его знает! Может, так и надо?
...
Рейтинг: 0 / 0
сложная процедура
    #38313064
Фотография Сергей Викт.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapВладимир Затуливетерпропущено...

тут можно не конвертить varchar в varchar :)VARCHAR(40) преобразуется в VARCHAR(30), однако!
Кто его знает! Может, так и надо?
я перестраховался просто:) Мало ли)
...
Рейтинг: 0 / 0
сложная процедура
    #38313071
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Викт.iapпропущено...
VARCHAR(40) преобразуется в VARCHAR(30), однако!
Кто его знает! Может, так и надо?
я перестраховался просто:) Мало ли)Тогда надо было использовать для названий объектов БД тип sysname.
Который базируется на NVARCHAR(128)
...
Рейтинг: 0 / 0
сложная процедура
    #38313077
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EXEC()-то всё равно @SQL преобразует в NVARCHAR(MAX)
Так что лучше сразу использовать юникод
и перед литеральными строками ставить букву N
...
Рейтинг: 0 / 0
сложная процедура
    #38313082
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Викт.NawyВот такая псевдопроцедура:
Код: sql
1.
2.
3.
4.
5.
6.
7.
CREATE PROCEDURE addWeight
	@weight INT,
	@name VARCHAR(40),
        @column VARCHAR(40),
AS
INSERT INTO TWeight(time, file_id)
VALUES (@weight, SELECT TOP 1 @column FROM @name ORDER BY @column DESC;);


Подскажите как результат запроса SELECT TOP 1 @column FROM @name ORDER BY @column DESC; записать в поле file_id таблицы TWeight.
Подскажите как это сделать без программы на ЯП, в чистом T-SQL.
Что-то типа такого, наверное
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE PROCEDURE addWeight
	@weight INT,
	@name VARCHAR(40),
        @column VARCHAR(40)
AS
DECLARE @sql varchar(max)
SET @sql=N'
INSERT INTO TWeight(time, file_id)
SELECT '+CONVERT(varchar,@weight)+', (SELECT TOP 1 '+CONVERT(varchar,@column)+' FROM '+CONVERT(varchar,@name)+' ORDER BY '+CONVERT(varchar,@column)+' DESC)';
EXEC(@sql)

объясните, пожалуйста, что случится при вот таком вызове процедуры?
Код: sql
1.
exec addWeight '0,0 truncate table TWeight--', '', ''
...
Рейтинг: 0 / 0
сложная процедура
    #38313087
Фотография Сергей Викт.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007Сергей Викт.пропущено...

Что-то типа такого, наверное
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE PROCEDURE addWeight
	@weight INT,
	@name VARCHAR(40),
        @column VARCHAR(40)
AS
DECLARE @sql varchar(max)
SET @sql=N'
INSERT INTO TWeight(time, file_id)
SELECT '+CONVERT(varchar,@weight)+', (SELECT TOP 1 '+CONVERT(varchar,@column)+' FROM '+CONVERT(varchar,@name)+' ORDER BY '+CONVERT(varchar,@column)+' DESC)';
EXEC(@sql)

объясните, пожалуйста, что случится при вот таком вызове процедуры?
Код: sql
1.
exec addWeight '0,0 truncate table TWeight--', '', ''


понятия не имею) я привёл пример. Вопросы к ТС)
...
Рейтинг: 0 / 0
сложная процедура
    #38313089
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эээ... не совсем удачный пример, потому как первый параметр int...
Но суть вопроса понятна?
...
Рейтинг: 0 / 0
сложная процедура
    #38313090
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Викт.Cygapb-007пропущено...
объясните, пожалуйста, что случится при вот таком вызове процедуры?
Код: sql
1.
exec addWeight '0,0 truncate table TWeight--', '', ''


понятия не имею) я привёл пример. Вопросы к ТС)

sql injection
иногда неплохо бы не просто приводить примеры.
...
Рейтинг: 0 / 0
сложная процедура
    #38313094
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
locky,

не будет там ее,первый паметр интовый
...
Рейтинг: 0 / 0
сложная процедура
    #38313098
Фотография Сергей Викт.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007Эээ... не совсем удачный пример, потому как первый параметр int...
Но суть вопроса понятна?
Код: sql
1.
exec addWeight '0,0 truncate table TWeight--', '', ''



Не очень....
ServerMsg 8114, Level 16, State 5, Procedure addWeight, Line 0
Error converting data type varchar to int.
...
Рейтинг: 0 / 0
сложная процедура
    #38313102
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxxlocky,

не будет там ее,первый паметр интовый
Код: sql
1.
exec addWeight 0, '', ' 0); truncate table TWeight--'
...
Рейтинг: 0 / 0
сложная процедура
    #38313104
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Викт.,

кста ,шлепнеться еще до того :))
Код: sql
1.
2.
3.
4.
SET @sql=N'
INSERT INTO TWeight(time, file_id) -- 2 поля
SELECT '+CONVERT(varchar,@weight)+', --1 значение
EXEC(@sql)
...
Рейтинг: 0 / 0
сложная процедура
    #38313105
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Викт.Cygapb-007Эээ... не совсем удачный пример, потому как первый параметр int...
Но суть вопроса понятна?
Код: sql
1.
exec addWeight '0,0 truncate table TWeight--', '', ''



Не очень....
ServerMsg 8114, Level 16, State 5, Procedure addWeight, Line 0
Error converting data type varchar to int.
Оки, попытка number two
Код: sql
1.
exec addWeight 0,'','0) truncate table TWeight--'
...
Рейтинг: 0 / 0
сложная процедура
    #38313108
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тьфу..
Код: sql
1.
exec addWeight 0,'','0) truncate table TWeight--'
...
Рейтинг: 0 / 0
сложная процедура
    #38313110
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей Алексеевич,

а так заработает )
...
Рейтинг: 0 / 0
сложная процедура
    #38313113
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Викт., сорри значения не досчитал... рабочая процедура
...
Рейтинг: 0 / 0
сложная процедура
    #38313115
Фотография Сергей Викт.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxxСергей Викт., сорри значения не досчитал... рабочая процедура
да я без претензий на суперпрофи) Базовый пример. Ни о какой защищенности говорить и не собирался) Налетели как коршуны ;)

Код: sql
1.
exec addWeight 0,'','0) truncate table TWeight--'


и таки да, не спорю:)
...
Рейтинг: 0 / 0
сложная процедура
    #38313118
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Викт.,

да лано вам,вечер уже
...
Рейтинг: 0 / 0
сложная процедура
    #38313123
Фотография Сергей Викт.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaxxСергей Викт.,

да лано вам,вечер уже
) всё ок) я только за дополнительный ликбез) Теперь сижу думаю, как это можно пофиксить.)))
Т.к. по итогу выполняется:

Код: sql
1.
2.
3.
4.
  INSERT INTO TWeight(time, file_id)  
  SELECT 0, (SELECT TOP 1 0) 
  delete TWeight
-- FROM  ORDER BY 0) delete TWeight-- DESC)


Вполне себе неплохо))
...
Рейтинг: 0 / 0
сложная процедура
    #38313129
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Викт., уже упоминалось в первом же ответе: тема "ТОП 10" вопрос номер 6
...
Рейтинг: 0 / 0
сложная процедура
    #38313130
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cygapb-007

[/src]объясните, пожалуйста, что случится при вот таком вызове процедуры?
Код: sql
1.
exec addWeight '0,0 truncate table TWeight--', '', ''

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


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