我熟悉MSSQL
并在查询中使用参数,但我不确定如何在PL/SQL
内执行此操作。
DECLARE
LSITEID NUMBER := 100001;
BEGIN
SELECT * from invoicehead ih
JOIN sitemaster sm on sm.SITEIID = ih.SITEIID
JOIN invoiceline il on il.invoiceIID = ih.invoiceIID
WHERE
ih.StartDate BETWEEN '2015-12-01' AND '2016-03-07'
AND SITEIID IN ( LSITEID)
END;
现在我在Pl / SQL中测试它。但基本上我会使用MSSQL Linked Server
OPENQuery
中的参数传递查询。
如何使用参数?
在PL / SQL中运行上述查询答案 0 :(得分:1)
还有很多其他资源可以找到答案,例如: here (Tutorialspoint)或具体here (plsql-tutorial)。但也许我错过了你的观点。
为了不仅仅引用链接,您的查询可能如下所示:
DECLARE
LSITEID integer;
BEGIN
LSITEID := 100001;
-- dostuff
END;
有两点需要注意:首先,在声明部分(我已经学会了)你应该避免赋值。其次,如果您打算传递不同的参数,您可以/应该使用一个过程。
答案 1 :(得分:0)
在PL / SQL中,您只需使用参数的名称。在以下示例中,参数为P_VALUE
,注意select语句为where dummy = p_value
。
DECLARE
FUNCTION dummycount (p_value IN DUAL.dummy%TYPE)
RETURN INTEGER
AS
l_ret INTEGER;
BEGIN
SELECT COUNT (*) c
INTO l_ret
FROM DUAL
WHERE dummy = p_value;
RETURN l_ret;
END dummycount;
BEGIN
DBMS_OUTPUT.put_line ('A: ' || dummycount (p_value => 'A'));
DBMS_OUTPUT.put_line ('X: ' || dummycount (p_value => 'X'));
END;
这导致以下输出:
A: 0
X: 1