之前我使用的是SQL Server,现在我必须在PL / SQL中完成一些任务,在我看来,Oracle完全没有逻辑,我无法在任何地方找到适当的用户友好文档。< / p>
如何在SQL Server中编写与此类似的存储过程:
create procedure test(
@x int
)
as
begin
select * from table where id = @x
end
如果可能只是解释pl / sql脚本背后的逻辑。谢谢。
答案 0 :(得分:1)
CREATE OR REPLACE PROCEDURE test (x NUMBER) AS
var_table_row TABLE%ROWTYPE;
BEGIN
select *
into var_table_row
from table where id = x;
END;
您需要声明一个行变量来存储您选择的内容。这个程序目前没有任何意义。你想要返回光标吗?
编辑:我使用这样的功能来做您要求的事情。
CREATE OR REPLACE FUNCTION test (x NUMBER) RETURN TABLE%ROWTYPE AS
var_table_row TABLE%ROWTYPE;
BEGIN
select *
into var_table_row
from table where id = x;
RETURN var_table_row;
END;
像这样调用这个函数。
Declare
var_row TABLE%ROWTYPE;
BEGIN
var_row := test(2); --passes two, returns a row. Use row like var_row.id
END;
答案 1 :(得分:0)
你的PL \ SQL过程看起来像......
create procedure test(x IN NUMBER)
IS
begin
select * from table where id = x;
end;