增加PL/SQL中的变量/计数器选择结果

Luk*_*uka 1 oracle

一个相当愚蠢的问题.我有一个带产品的Oracle Db,现在读出前10个产品.

我现在想要以下显示

1 Product A
2 Product XY
3 Product B
Run Code Online (Sandbox Code Playgroud)

愚蠢的问题,但如何让柜台在前面?我显然必须增加,但我不明白它是如何工作的.我还想过使用WITH和tmp表,但无法弄清楚如何设置它.

SELECT POS ???, PRODUCTNAME FROM TBLPRODUCT
Run Code Online (Sandbox Code Playgroud)

我对PL/SQL不太熟悉.有人能给我一个暗示吗?非常感谢.

Dav*_*sta 7

ROWNUM 是Bob所示的一种方法,但如果您使用的是更复杂的查询 - 特别是如果您明确地排序行 - 它可能无法提供您想要的结果.

如今,分析函数通常是一种更好的方法,因为您可以明确控制排序:

SELECT ROW_NUMBER() OVER (ORDER BY productname), productname
  FROM tableproduct
  ORDER BY productname
Run Code Online (Sandbox Code Playgroud)

请注意,确定行号的行的顺序与整个结果集的顺序是分开的.在这个例子中,我使用了与您可能想要的相同的顺序,但值得注意的是,这为您提供了更大的灵活性.

(并且道歉有点迂腐,但这与PL/SQL无关,PL/SQL是Oracle中嵌入的过程语言.这只是关于Oracle的SQL实现.)

  • +1,如果你传授的信息使事情更清晰并且对OP有更好的理解,那么迂腐是没有错的. (2认同)

Bob*_*ica 5

使用ROWNUM,如

SELECT ROWNUM, PRODUCTNAME FROM TBLPRODUCT
Run Code Online (Sandbox Code Playgroud)

分享和享受.