私はSQL Serverで完全に動作し、簡単なSQL文を持っている:ルーキーOracleの変数質問
DECLARE @ID VARCHAR(10)
SET @ID = '12345'
SELECT *
FROM theTable
WHERE ID = @ID
誰かがどのようにOracleの中で、この非常に基本的なことを行う方法を教えていただけますか?
私はSQL Serverで完全に動作し、簡単なSQL文を持っている:ルーキーOracleの変数質問
DECLARE @ID VARCHAR(10)
SET @ID = '12345'
SELECT *
FROM theTable
WHERE ID = @ID
誰かがどのようにOracleの中で、この非常に基本的なことを行う方法を教えていただけますか?
スクリプトの先頭に変数を設定するのが目的なら、おそらくこれがあなたの解決策ですか?
with IDS as (
select 1234 from dual
union all
select 1235 from dual
)
select * from TABLE where TABLE.ID in (select * from IDS)
ありがとうたくさんのropstah!私はOracleをもっと知っていれば他の答えが私のために働いていたと思うが、これが最初に結果を返すことができる。 – wcm
残念ながら、簡単な方法はありません。
ブロック内で宣言する必要があります(これはストアドプロシージャである必要がありますが、少なくともブロック内にある必要があります)。しかし、それは問題のほんの一部です。一度ブロックに入ると、結果はコンソールウィンドウに長く流出することはありません。そのため、カーソルを使用して配列に行情報をコピーし、DMBS_OUTPUTを使用して値を出力する配列をステップ実行する必要があります。
簡単にMSSQLに戻すことができます。
(注:Mark Harrison)この回答は正しくありません。コードのoracleバージョンのその他の回答を参照してください。
YIKES! MSSQLで私の目を閉じて何かできることを誰かに尋ねるたびに、私はこの種のものにぶつかります。あなたが正しいです!私を追いやるだけで十分です。 – wcm
あなたは、SQL * Plusのインタフェース(コマンドラインからSQLPLUS)を使用して、似たような操作を行うことができます。
variable asdf number;
exec :asdf := 10;
select :asdf from dual;
SQLではよろしく K
* Plusは、それはほとんど同じです:
SQL> create table thetable (id) as select '' from dual union all select '12345' from dual
2/
Table created.
SQL> var id varchar2(10)
SQL> exec :id := '12345'
PL/SQL procedure successfully completed.
SQL> select *
2 from theTable
3 where id = :id
4/
ID
-----
12345
1 row selected.
を
またはPL/SQL:
SQL> declare
2 l_id varchar2(10) := '12345';
3 r thetable%rowtype;
4 begin
5 select *
6 into r
7 from thetable
8 where id = l_id
9 ;
10 dbms_output.put_line(r.id);
11 end;
12/
12345
PL/SQL procedure successfully completed.
よろしく、 ロブ。
ありがとうございました。私は彼が私のために働くことができる最初のものだったので、私はロプスタの答えを選んだ。個人的な人はいませんが、Oracleではいくつかのことをするのは難しい – wcm
Oracleはそれを覚えておいてください。それは価値があります。それを習得するにあたっては多くのパワーがあります:) –