Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Shauna
Member

Откуда:
Сообщений: 37
Добрый день. Скажите, почему у некоторых процедур вылезет ошибка- a USE database statement is not allowed in a procedure, function or trigger.

Например у процедуры:
use sait1
go
CREATE PROCEDURE p0 (@number int)
AS
BEGIN
SELECT * from ZAJVKA
Where NOMER_ZAJVKA > @number
Order by NOMER_ZAJVKA
END
GO
exec p0 '105'
5 июн 13, 14:01    [14394586]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Shauna
почему у некоторых процедур вылезет ошибка

Потому что USE database statement is not allowed in a procedure, function or trigger
5 июн 13, 14:02    [14394600]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Shauna
Member

Откуда:
Сообщений: 37
в 4 из 20 USE database statement is not allowed in a procedure, function or trigger
5 июн 13, 14:09    [14394658]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Shauna
в 4 из 20 USE database statement is not allowed in a procedure, function or trigger

Что вам непонятно в сообщении об ошибке ?
not allowed означает нельзя использовать
5 июн 13, 14:11    [14394678]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Shauna
Добрый день. Скажите, почему у некоторых процедур вылезет ошибка- a USE database statement is not allowed in a procedure, function or trigger.

Например у процедуры:
use sait1
go
CREATE PROCEDURE p0 (@number int)
AS
BEGIN
SELECT * from ZAJVKA
Where NOMER_ZAJVKA > @number
Order by NOMER_ZAJVKA
END
GO
exec p0 '105'
Что-то не верится, что здесь может быть такая ошибка. Вы полный текст привели?
5 июн 13, 14:17    [14394731]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Shauna
Member

Откуда:
Сообщений: 37
вот именно что нет ошибки. если вставлять в поле stored procedures, то ошибки нет. все работает
если вставлять в в query под бд, то данная ошибка вылазит
5 июн 13, 14:26    [14394815]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Shauna
вот именно что нет ошибки. если вставлять в поле stored procedures, то ошибки нет. все работает
если вставлять в в query под бд, то данная ошибка вылазит

- Изъяснейтесь, пожалуйста, нормальным языком
- Приводите, пожалуйста, код, который вызывает ошибку. А не любой попавшийся
5 июн 13, 14:28    [14394831]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
invm
Member

Откуда: Москва
Сообщений: 9405
Потому что у вас наверняка получилось что-то типа такого:
use tempdb;
go

create procedure dbo.proc1
as
begin
 print '1'
end;

use tempdb;
go

create procedure dbo.proc2
as
begin
 print '2'
end;
go
Т.е. имеет место пропущенный "go"
5 июн 13, 14:32    [14394857]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Shauna
вот именно что нет ошибки. если вставлять в поле stored procedures, то ошибки нет. все работает
если вставлять в в query под бд, то данная ошибка вылазит

USE [BD]
GO
CREATE PROC aaa AS
/...../

И
CREATE PROC aaa AS
USE [BD]

/...../

Это совершенно разные вещи!!!
5 июн 13, 14:34    [14394876]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Shauna
Member

Откуда:
Сообщений: 37
/* Создадим процедуру на увеличение стоимости всех объявлений в два раза.*/
use sait1
go
CREATE PROCEDURE price_growth (@p_g int = 2)
as
BEGIN
update chet set stoimost = stoimost *@p_g
print 'Цена увеличилась'
END
GO
exec price_growth

Msg 154, Level 15, State 1, Procedure count_1, Line 12
a USE database statement is not allowed in a procedure, function or trigger.
5 июн 13, 14:34    [14394877]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Shauna
Msg 154, Level 15, State 1, Procedure count_1, Line 12

Где у вас процедура count_1 в предложенном скрипте ?
5 июн 13, 14:36    [14394893]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Shauna
/* Создадим процедуру на увеличение стоимости всех объявлений в два раза.*/
use sait1
go
CREATE PROCEDURE price_growth (@p_g int = 2)
as
BEGIN
update chet set stoimost = stoimost *@p_g
print 'Цена увеличилась'
END
GO
exec price_growth

Msg 154, Level 15, State 1, Procedure count_1, Line 12
a USE database statement is not allowed in a procedure, function or trigger.


Procedure count_1
Простите за грубость, чего вы лечите??? Предоставьте полный код, а не выдумку!!!
5 июн 13, 14:37    [14394897]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Shauna,

у Вас меньше 12 строк.
Темните...
5 июн 13, 14:38    [14394904]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Shauna
Member

Откуда:
Сообщений: 37
CREATE DATABASE SAIT
--Создаем таблицу СЧЕТ
CREATE TABLE CHET (
CHET_ID INTEGER PRIMARY KEY,
STOIMOST MONEY)
INSERT INTO CHET (CHET_ID, STOIMOST)
VALUES('11', '1000.00'),
('22', '1500.00'),
('33', '2000.00'),
('44', '2500.00'),
('55', '3000.00'),
('66', '3500.00'),
('77', '4000.00'),
('88', '4500.00'),
('99', '5000.00'),
('19', '5500.00');

/* Создадим процедуру на вывод информации о счетах, стоимость которых находится в пределах вводимого диапазона.*/
use sait
go
CREATE PROC count_1
(@dl money, @d2 money)
AS
begin
select *
from chet
where stoimost BETWEEN @dl AND @d2
order by stoimost
END
exec count_1 '2000.00', '4000.00'
/* Создадим процедуру на увеличение стоимости всех объявлений в два раза.*/
use sait1
go
CREATE PROCEDURE price_growth (@p_g int = 2)
as
BEGIN
update chet set stoimost = stoimost *@p_g
print 'Цена увеличилась'
END
GO
exec price_growth
5 июн 13, 14:44    [14394961]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Ув. Shauna
Вы умеете считать до 12 ?
5 июн 13, 14:47    [14394981]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Shauna,

CREATE PROC count_1
(@dl money, @d2 money)
AS
begin
select *
from chet
where stoimost BETWEEN @dl AND @d2
order by stoimost
END
GO
exec count_1 '2000.00', '4000.00'
5 июн 13, 14:47    [14394982]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Shauna
Member

Откуда:
Сообщений: 37
выдает
Msg 111, Level 15, State 1, Procedure count_1, Line 297
'CREATE/ALTER PROCEDURE' must be the first statement in a query batch.
5 июн 13, 14:55    [14395033]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Shauna
Procedure count_1, Line 297
5 июн 13, 14:59    [14395064]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Glory
Shauna
Procedure count_1, Line 297

))))))))))
сорри.. не сдержался...
5 июн 13, 15:00    [14395069]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка a USE database statement is not allowed in a procedure, function or trigger.  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3274
Shauna
/* Создадим процедуру на вывод информации о счетах, стоимость которых находится в пределах вводимого диапазона.*/
use sait
go
CREATE PROC count_1
(@dl money, @d2 money)
AS
begin
select *
from chet
where stoimost BETWEEN @dl AND @d2
order by stoimost
END
exec count_1 '2000.00', '4000.00'
Ваш END не завершает тело процедуры, поэтому идущий за ним exec попадает в тело хранимки тоже. И идущий за ним, но не показанный здесь, use sait1 - вот на него и ошибка.
В конце процедуры GO поставьте.
5 июн 13, 15:58    [14395457]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить