我正在创建一个 Oracle 包,我想知道是否可以将 prcedure 设为私有,这是我的示例代码:
CREATE OR REPLACE PACKAGE MYSCHEMA.MyPackage AS
PROCEDURE MyProcedureA(outputParam OUT VARCHAR2);
PROCEDURE MyProcedureB(inputParam IN VARCHAR2);
END MyPackage;
/
CREATE OR REPLACE PACKAGE BODY MYSCHEMA.MyPackage AS
PROCEDURE MyProcedureA(outputParam OUT VARCHAR2) AS
myHello VARCHAR2(1000) := 'Hello';
BEGIN
MyProcedureB(myHello);
outputParam := 'OK';
END MyProcedureA;
PROCEDURE MyProcedureB(inputParam IN VARCHAR2) AS
myWorld VARCHAR2(1000) := 'World';
BEGIN
dbms_output.put_line(inputParam || myWorld);
END MyProcedureB;
END MyPackage;
Run Code Online (Sandbox Code Playgroud)
是否可以将 MyProcedureB 设为“私有”,我的意思是它只能由包 (MyProcedureA) 中的其他程序调用?
我是 async/await 的初学者,我的代码出现错误,我无法弄清楚如何修复它:
public static Func<string> GetTheID;
void Main()
{
GetTheID = async () => await GetMyId(); //Error here!
Console.WriteLine(GetTheID);
}
public async Task<string> GetMyId()
{
return await Task.Run(() =>
{
return "AAABBBB";
});
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
无法将异步 lambda 表达式转换为委托类型
'Func<string>'。异步 lambda 表达式可能返回void,Task或Task<T>, 其中没有一个可以转换为'Func<string>'
您能否帮助我如何在不更改委托签名的情况下修复此错误GetTheID(我的意思是不将其签名更改为Func<Task<string>>)?