Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RFpro.ru: Базы данных MySQL


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Megaloman
Статус: Академик
Рейтинг: 79
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Мастер-Эксперт
Рейтинг: 12
∙ повысить рейтинг »
Alexander Babich
Статус: Профессор
Рейтинг: 0
∙ повысить рейтинг »

∙ Базы данных

Номер выпуска:522
Дата выхода:21.08.2017, 14:15
Администратор рассылки:Коцюрбенко Алексей aka Жерар (Мастер-Эксперт)
Подписчиков / экспертов:17 / 12
Вопросов / ответов:3 / 5

Консультация # 159069: Доброй ночи, господа! Срочно нужна помощь. Проблема в следующем ----------------------------Есть хранимая процедура------------------- CREATE PROC InsertTT ( @TicketID int OUT, @Description varchar(100), @RespPerson smallint, @ControlPerson smallint, @History varchar(max), @Status varchar(15), @Sec...
Консультация # 80991: Всем здрасте! Подскажите как написать запрос, чтобы из данных, например 1/124545485(125), вырезать цифры до знака слэш, после слеш до скобки, и саму цифру взять из скобок. То есть чтобы получились в итоге отдельные столбцы : 1 124545485 125 Количество цифр может варьироваться, т.е. точная длина неизвестна(т.е. функцию substring уж...
Консультация # 52401: Еще раз здравствуйте, уважаемые эксперты! Я хочу задать вопрос в дополнение к вопросу № 50840. Возможно ли изменить текст SQL-запроса так, чтобы он показывал еще и PLACEID, PLACENAME для количества машин, равного 0. То есть выводил ВСЕ placename - даже те, для которых CARSCOUNT равно 0. Заранее огромное спасибо....

Консультация # 159069:

Доброй ночи, господа!
Срочно нужна помощь. Проблема в следующем

----------------------------Есть хранимая процедура-------------------

CREATE PROC InsertTT
(
@TicketID int OUT,
@Description varchar(100),
@RespPerson smallint,
@ControlPerson smallint,
@History varchar(max),
@Status varchar(15),
@SecurityLevel varchar(15),
@ChanelID int,
@Creator nvarchar(128),
@WhenCreated datetime = NULL
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @err int
INSERT INTO TroubleTickets
(
Description, RespPerson, ControlPerson, History, Status,
SecurityLevel, ChanelID, Creator, WhenCreated
)
VALUES
(
@Description, @RespPerson, @ControlPerson, @History,
@Status, @SecurityLevel, @ChanelID, @Creator, GETDATE() ---<<<<<<<<-------
)
SELECT @TicketID = @@IDENTITY, @err = @@ERROR

IF @Err = 0
RETURN 0 ELSE
RETURN -1
END

--------------------------------------Есть запрос на запуск------------------------------

DECLARE @TicketID int
EXEC InsertTT @TicketID out, 'Описание', 1, 2, 'История',
'Service', 'Public', 70850, 'Иванов'
SELECT @TicketID AS TicketID
GO

--------------------------------------------------------------

так, как я написал все работает, НО, как только вместо 'Creator' я ставлю SUSER_NAME(), и соответственно, убираю в запросе вызова процедуры параметр 'Иванов', появляется следующее

"Процедура или функция "InsertTT" ожидает параметр "@Creator", который не был предоставлен."

тип возвращаемых данных правильный (если верить tech.microsoft.com.ru)
с SUSER_SNAME() такая же ситуация.

Будьте добры, посодействуйте в решении данного вопроса!

Дата отправки: 29.01.2009, 06:50
Вопрос задал: Константин Ашоким
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Челноков Виктор Альбертович:

Здравствуйте, Константин Ашоким!
Измените процедуру и не пердавайте имя как праметр.

CREATE PROC InsertTT
(
@TicketID int OUT,
@Description varchar(100),
@RespPerson smallint,
@ControlPerson smallint,
@History varchar(max),
@Status varchar(15),
@SecurityLevel varchar(15),
@ChanelID int,
@WhenCreated datetime = NULL
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @err int, @Creator nvarchar(128)
select @Creator =SUSER_NAME()
INSERT INTO TroubleTickets
(
Description, RespPerson, ControlPerson, History, Status,
SecurityLevel, ChanelID, Creator, WhenCreated
)
VALUES
(
@Description, @RespPerson, @ControlPerson, @History,
@Status, @SecurityLevel, @ChanelID, @Creator, GETDATE() ---<<<<<<<<-------
)
SELECT @TicketID = @@IDENTITY, @err = @@ERROR

IF @Err = 0
RETURN 0
ELSE
RETURN -1
END

Консультировал: Челноков Виктор Альбертович
Дата отправки: 29.01.2009, 08:30
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 80991:

Всем здрасте! Подскажите как написать запрос, чтобы из данных, например 1/124545485(125), вырезать цифры до знака слэш, после слеш до скобки, и саму цифру взять из скобок. То есть чтобы получились в итоге отдельные столбцы :

1 124545485 125

Количество цифр может варьироваться, т.е. точная длина неизвестна(т.е. функцию substring уже использоват нельзя).
Заранее спасибо!

Дата отправки: 04.04.2007, 09:53
Вопрос задал: Shtuchka007
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Ерёмин Андрей:

Здравствуйте, Shtuchka007!
В SQL есть все необходимые функции для работы со строками. В данном случае могут понадобиться:
LENGTH() - длина строки;
LOCATE(A,B) - позиция подстроки A в строке B;
LOCATE(A,B,C) - позиция подстроки B в строке A, начиная с позиции C;
SUBSTRING(A,B,C) - возвращает подстроку из A, с позиции B до позиции C.
Этого вполне достаточно. Таким образом:
SUBSTRING(`str`,1,LOCATE("/",`str`)-1) - 1-ый фрагмент
SUBSTRING(`str`,LOCATE("/",`str`)+1,LOCATE("(",`str`)-LOCATE("/",`str`)-1) - 2-ой
SUBSTRING(`str`,LOCATE("(",`str`)+1,LOCATE(")",str)-LOCATE("(",`str`)-1) - 3-ий
А вот и запрос целиком:
SELECT SUBSTRING(`str`,1,LOCATE("/",`str`)-1) , SUBSTRING(`str`,LOCATE("/",`str`)+1,LOCATE("(",`str`)-LOCATE("/",`str`)-1) , SUBSTRING(`str`,LOCATE("(",`str`)+1,LOCATE(")",str)-LOCATE("(",`str`)-1) FROM `table`
Здесь `table` - таблица, `str` - поле, содержащее это исходное выражение.
Желаю удачи!
---
Дополнение: в SQL Server 2000 вместо функции LOCATE следует использовать CHARINDEX.

Консультировал: Ерёмин Андрей
Дата отправки: 04.04.2007, 11:08
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 52401:

Еще раз здравствуйте, уважаемые эксперты!

Я хочу задать вопрос в дополнение к вопросу № 50840. Возможно ли изменить текст SQL-запроса так, чтобы он показывал еще и PLACEID, PLACENAME для количества машин, равного 0. То есть выводил ВСЕ placename - даже те, для которых CARSCOUNT равно 0.

Заранее огромное спасибо.

Дата отправки: 17.08.2006, 10:48
Вопрос задал: Балашов Григорий
Всего ответов: 3
Страница онлайн-консультации »


Консультирует Козлов Алексей Сергеевич:

Здравствуйте, Балашов Григорий!
Это код нужно переписать так:

SELECT places.PlaceName, count(cars.carname) AS CarsCount FROM places LEFT JOIN cars ON places.placeid=cars.placeid GROUP BY places.placename

P.S. Есть еще оператор RIGHT JOIN

Консультировал: Козлов Алексей Сергеевич
Дата отправки: 17.08.2006, 12:00
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Александр Шевченко:

Здравствуйте, Балашов Григорий!
select places.PlaceName, count(cars.carname) as CarsCount from places left join cars on places.placeid=cars.placeid group by places.placename

Консультировал: Александр Шевченко
Дата отправки: 17.08.2006, 12:09
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Morgen_krsk:

Здравствуйте, Балашов Григорий!
Все проще, зачем left joir, right join, ...

SELECT places.PlaceName, (SELECT COUNT(1) FROM cars WHERE places.placeid=cars.placeid) cnt FROM places

P.S. С самого начала писал ответ где-то выше, но видимо он пропал :(

Консультировал: Morgen_krsk
Дата отправки: 17.08.2006, 16:21
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное