2014-12-01 9 views
1

Мне нужна помощь с запросом.выберите значение в viarble в Oracle SQL

Я хочу выбрать значение количества строк из таблицы, а затем использовать значение в другом запросе. Например:

@rowcount = select count(*) from MyTable 

select A*@rowcount, B/@rowcount 
from MyOtherTable 

Может ли кто-нибудь показать мне, что такое правильный синтаксис? Мне нужно использовать @rowcount много раз, поэтому я предпочитаю рассчитать его только один раз.

+0

вы получите ошибку с вышесказанным? – Matt

+0

'@ rowcount' не является допустимым идентификатором PL/SQL. Это похоже на часть кода T-SQL, которая будет работать на SQL Server. Однако вы отметили этот вопрос «Oracle». Вы пытаетесь преобразовать часть кода T-SQL в PL/SQL? –

+0

Вы не можете смешивать процедурный код (PL/SQL) и обычный SQL. –

ответ

3

В Oracle вы не можете смешивать процедурный код и обычный SQL.

Но если вы используете это:

select a/(select count(*) from mytable), 
     b/(select count(*) from mytable) 
from myothertable; 

Oracle будет оценивать count(*) только один раз. Нет необходимости хранить значение где-то, чтобы повысить производительность.

Если вы хотите, вы можете переместить это в общее табличное выражение:

with row_count as (
    select count(*) as numrows 
    from mytable 
) 
select a/(select numrows from row_count), 
     b/(select numrows from row_count) 
from myothertable; 
+0

Большое вам спасибо! – Omri