Abaixo está um exemplo de uso de variáveis no SQL Server 2000.
DECLARE @EmpIDVar INT
SET @EmpIDVar = 1234
SELECT *
FROM Employees
WHERE EmployeeID = @EmpIDVar
Eu quero fazer exatamente a mesma coisa no Oracle usando o SQL Developer sem complexidade adicional. Parece uma coisa muito simples de fazer, mas não consigo encontrar uma solução simples. Como eu posso fazer isso?
Respostas:
Estou usando o SQL-Developer na versão 3.2. As outras coisas não funcionaram para mim, mas isso funcionou:
Além disso, é a maneira mais inteligente apresentada aqui.
(Se você omitir a parte "definir", esse valor será solicitado)
fonte
Existem dois tipos de variáveis em SQL-plus: substituição e vinculação.
Isto é substituição (variáveis de substituição podem substituir opções de comando SQL * Plus ou outro texto embutido em código):
Isso é vincular (as variáveis de vinculação armazenam valores de dados para instruções SQL e PL / SQL executadas no RDBMS; elas podem conter valores únicos ou conjuntos de resultados completos):
O SQL Developer oferece suporte a variáveis de substituição, mas quando você executa uma consulta com
:var
sintaxe de vinculação, é solicitada a vinculação (em uma caixa de diálogo).Referência:
Variáveis de substituição UPDATE são um pouco complicadas de usar, veja:
fonte
var x
eexec :x
, sem prompt.No SQL * Plus, você pode fazer algo muito semelhante
No SQL Developer, se você executar uma instrução que contenha qualquer número de variáveis de vinculação (prefixadas com dois pontos), será solicitado que você insira valores. Como Alex aponta, você também pode fazer algo semelhante usando a função "Executar Script" (F5) com a sintaxe EXEC alternativa que Alex sugere que faça.
fonte
select...into
(ORA-01006), então você precisa fazerexec :v_emp_id := 1234;
.Ok, eu sei que isso é um pouco um hack, mas esta é uma maneira de usar uma variável em uma consulta simples, não um script:
Você pode executá-lo em todos os lugares.
fonte
Resposta simples NÃO.
No entanto, você pode conseguir algo semelhante executando a seguinte versão usando variáveis de ligação:
Depois de executar a consulta acima no SQL Developer, você será solicitado a inserir o valor da variável de ligação EmployeeID.
fonte
Você pode ler em outro lugar sobre variáveis de substituição; eles são muito úteis no SQL Developer. Mas eu tentei usar variáveis de ligação no SQL Developer. Isto é o que eu faço:
SET SERVEROUTPUT ON
faz com que o texto possa ser impresso no console de saída do script.Acredito que o que estamos fazendo aqui se chama oficialmente PL / SQL. Saímos da terra do SQL puro e estamos usando um mecanismo diferente no Oracle. Você vê o
SELECT
acima? Em PL / SQL você sempre temSELECT ... INTO
uma variável ou um refcursor. Você não pode simplesmenteSELECT
retornar um conjunto de resultados em PL / SQL.fonte
Acho que a maneira mais fácil no seu caso é:
Para os valores da string será como:
fonte
Use a próxima consulta:
fonte
Tente isso vai funcionar, é melhor criar um procedimento, se o procedimento não for possível você pode usar este script.
fonte
No sql developer, defina propriedades por padrão "ON". Se estiver "DESLIGADO" em qualquer caso, use os passos abaixo.
set define on; define batchNo='123'; update TABLE_NAME SET IND1 = 'Y', IND2 = 'Y' WHERE BATCH_NO = '&batchNo';
fonte