标签: out-parameters

为什么这个C#代码没有编译?

为什么这个C#代码没有编译?

public static Dictionary<short, MemoryBuffer> GetBulkCustom(int bufferId,
    int startSecond,out int chunksize, out int bardatetime)
{
    //const string _functionName = "GetNextBulkWatchData";

    UserSeriesCard currentCard = GetUserSeriesCard(bufferId);

    Dictionary<short, MemoryBuffer> result = null;

    while (currentCard.CurrentSecond <= startSecond)
        result = GetBulk(bufferId, out chunksize, out bardatetime);

    if (result == null)
    {
        result = currentCard.UserBuffer;
        chunksize = currentCard.ChunkSize;
        bardatetime = currentCard.CurrentBarDateTime;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

错误:

The out parameter 'bardatetime' must be assigned to before control leaves the current method
The out parameter 'chunksize' must be assigned …
Run Code Online (Sandbox Code Playgroud)

c# compilation out-parameters

3
推荐指数
2
解决办法
703
查看次数

是否可以忽略'出'参数?

我有这样的方法......

public List<String> TestMethod(Int32 parameter, out Boolean theOutParameter)
{
}
Run Code Online (Sandbox Code Playgroud)

当我调用该方法时,如果我theOutParameter对该方法的调用看起来不感兴趣?bool如果我对该值不感兴趣,那么实例化一个新的只是有点过分,以便处理方法的out参数.

c# methods out-parameters

3
推荐指数
1
解决办法
128
查看次数

PHP - MySQL从存储过程中获取out参数的值

我用PHP调用了一个MySQL存储过程mysqli.这有一个输出参数.

$rs = $mysqli->query("CALL addNewUser($name,$age,@id)");
Run Code Online (Sandbox Code Playgroud)

这里,@ id是out参数.接下来,我触发以下查询以获取out参数的值:

$rs2 = $mysqli->query("SELECT @id");
while($row = $rs->fetch_object()){
    echo var_dump($row);
}
Run Code Online (Sandbox Code Playgroud)

输出var_dump如下.

object(stdClass)#5 (1) { ["@id"]=> string(6) "100026" }
Run Code Online (Sandbox Code Playgroud)

所以,现在我想要检索@id我无法获取的值.我试过$row[0]->{@id}但这给出了以下错误:

PHP致命错误:无法使用stdClass类型的对象作为数组

php mysql out-parameters

3
推荐指数
1
解决办法
2万
查看次数

C# - 在Thread中使用带有"out"参数的函数

我有以下功能,我想在以下内容中使用它System.Threading.Thread:

private void tempFunction(int num, out string fullname, out string info)
{
    // Doing a very long scenario.
    // When finished, send results out!
    fullname = result1;
    info = result2;
}
Run Code Online (Sandbox Code Playgroud)

我试过在(button_Click)事件处理程序中使用以下代码:

private void submit_Button_Click(object sender, RoutedEventArgs e)
{
    string Fullname = string.Empty, Info = string.Empty;
    int index = 132;

    Thread thread = new Thread(() => tempFunction(index, out Fullname, out Info));
    thread.Start();
    thread.Join();

    // I always use "MessageBox" to check if what I want to do was done …
Run Code Online (Sandbox Code Playgroud)

c# multithreading function out-parameters

3
推荐指数
1
解决办法
2928
查看次数

ibatis输入/输出参数问题

谁能告诉我什么是错的?我有两个程序和两个映射.一个工作正常,另一个失败.这个工作正常:

    <parameterMap id="mapping-descriptions" class="java.util.Map">
        <parameter property="id" javaType="java.lang.Long" jdbcType="NUMBER" mode="IN"/>
        <parameter property="lang" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
        <parameter property="shortDesc" javaType="java.lang.String" jdbcType="VARCHAR" mode="OUT"/>
        <parameter property="fullDesc" javaType="java.lang.String" jdbcType="VARCHAR" mode="OUT"/>
    </parameterMap>
<procedure id="get-description"
        parameterMap="mapping-descriptions">
        {call COM_DESCRIPTION_PKG.get_desc(?,?,?,?)}
</procedure>
Run Code Online (Sandbox Code Playgroud)

这个失败了:

    <parameterMap id="mapping-description-modifiable" class="java.util.Map">
        <parameter property="id" javaType="java.lang.Long" jdbcType="NUMBER" mode="INOUT"/>
        <parameter property="lang" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
        <parameter property="shortDesc" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
        <parameter property="fullDesc" javaType="java.lang.String" jdbcType="VARCHAR" mode="IN"/>
        <parameter property="modify" javaType="boolean" jdbcType="NUMBER" mode="IN"/>
    </parameterMap>
<procedure id="add-description"
        parameterMap="mapping-description-modifiable">
        {call COM_DESCRIPTION_PKG.add_desc(?,?,?,?,?)}
</procedure>
Run Code Online (Sandbox Code Playgroud)

有这个例外:

--- The error occurred while executing update procedure.  
--- Check the {call …
Run Code Online (Sandbox Code Playgroud)

java ibatis out-parameters

2
推荐指数
1
解决办法
1万
查看次数

PL SQL - 接受SQLCODE作为OUT参数被接受?

我有一个返回OUT参数的过程.

procedure foo (in_v IN INTEGER, out_v OUT integer)
BEGIN
...
EXCEPTION
  WHEN OTHERS THEN
    --sh*t happend
    out_v := SQLCODE;
END
Run Code Online (Sandbox Code Playgroud)

如果一切正常,该参数将为0,如果发生丑陋,则该参数为<0.

现在,如果顺便发生sh*t,将抛出异常.

是否可以将SQLCODE值分配给OUT参数?或者这是一个代码味道,我将被驱逐出编程社区?

提前致谢.

oracle plsql procedure out-parameters

2
推荐指数
1
解决办法
2278
查看次数

如何使用RECORD TYPE作为OUT参数执行存储过程

这是包规范:

create or replace PACKAGE EMPLOYEE_DETAILS AS

        TYPE DETAILS IS RECORD( 
        EMPLOYEE_ID NUMBER(6,0),
          EMPLOYEE_FIRST_NAME VARCHAR2(20),
          EMPLOYEE_LAST_NAME VARCHAR2(25)
          );

        TYPE TABLE_EMPLOYEES IS TABLE OF DETAILS;

        PROCEDURE GET_EMPLOYEES(
        EMP_DEPT_ID EMPLOYEES.DEPARTMENT_ID%TYPE,
        EMP_SALARY employees.salary%TYPE,
        TBL_EMPLOYEES OUT TABLE_EMPLOYEES
        );

        END EMPLOYEE_DETAILS;
Run Code Online (Sandbox Code Playgroud)

而这就是包装体.我能够编译包,但需要一些帮助来执行存储过程来验证结果.

create or replace PACKAGE BODY EMPLOYEE_DETAILS AS

    PROCEDURE GET_EMPLOYEES(
    EMP_DEPT_ID EMPLOYEES.DEPARTMENT_ID%TYPE, 
    EMP_SALARY employees.salary%TYPE,
    TBL_EMPLOYEES OUT TABLE_EMPLOYEES
)

IS
    LC_SELECT SYS_REFCURSOR;
    LR_DETAILS DETAILS;
    TBL_EMPLOYEE TABLE_EMPLOYEES;

BEGIN
    OPEN LC_SELECT FOR 
        SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME 
        FROM EMPLOYEES
        WHERE DEPARTMENT_ID=EMP_DEPT_ID
        AND EMPLOYEES.SALARY>EMP_SALARY;

    LOOP 
        FETCH LC_SELECT INTO LR_DETAILS;
        EXIT WHEN …
Run Code Online (Sandbox Code Playgroud)

oracle plsql stored-procedures out-parameters recordtype

2
推荐指数
1
解决办法
1万
查看次数

如何在 Rust 中初始化 sigset_t 或其他用作“输出参数”的变量?

我正在尝试更多地了解 Rust 中的 FFI 并与 C 库链接,特别是libc. 在我的“任务”中,我遇到了以下问题。

C中的正常模式

void(* sig_set(int sig, void(*handler)(int))) {
    // uninitialized sigaction structs
    struct sigaction new_action, old_action;

    // assign options to new action
    new_action.sa_flags = SA_RESTART;
    new_action.sa_handler = handler;
    sigemptyset(&new_action.sa_mask);

    if(sigaction(sig, &new_action, &old_action) < 0) {
        fprintf(stderr, "Error: %s!\n", "signal error");
        exit(1);
    }
    return old_action.sa_handler;
}
Run Code Online (Sandbox Code Playgroud)

尝试 Rust

use libc; // 0.2.77

fn sig_init(sig: i32, handler: fn(i32) -> ()) -> usize {
    unsafe {
        let mut new_action: libc::sigaction;
        let mut old_action: libc::sigaction;

        new_action.sa_flags …
Run Code Online (Sandbox Code Playgroud)

libc ffi out-parameters rust

2
推荐指数
1
解决办法
812
查看次数

如何在已知正确的数组长度之前将字节数组初始化为C#中的OUT参数

我遇到了一个用于将文件下载到调用HTTPHandler.ashx文件的web方法的问题.处理程序调用webmethod如下:

byte[] docContent;
string fileType;
string fileName;
string msgInfo = brokerService.DownloadFile(trimURL, recNumber, out docContent, out fileType, out fileName);
Run Code Online (Sandbox Code Playgroud)

在被调用的webmethod中,我必须在使用它之前初始化字节数组,否则我会在所有return语句中出现编译器错误:

The out parameter 'docContents' must be assigned to before control leaves the current method
Run Code Online (Sandbox Code Playgroud)

我尝试将其设置为空数组,但这会导致Buffer.BlockCopy方法失败:

Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.
mscorlib
  at System.Buffer.BlockCopy(Array src, Int32 srcOffset, Array dst, Int32 dstOffset, Int32 count)
Run Code Online (Sandbox Code Playgroud)

我知道我需要初始化它,但我不知道在访问数据库之前所需的数组长度.通过调试我验证了所有代码的工作原理,除了Buffer.BlockCopy:

    public string DownloadFile(string trimURL
        , …
Run Code Online (Sandbox Code Playgroud)

c# bytearray out-parameters

1
推荐指数
1
解决办法
4065
查看次数

是否必须在PL/SQL中为OUT参数赋值?

create or replace procedure ppp(ot OUT number)
is
begin
null;
end;
/
Run Code Online (Sandbox Code Playgroud)

这在被调用时工作正常.

oracle plsql out-parameters

1
推荐指数
1
解决办法
4366
查看次数

C#中的参数

当我想在C#中获取内存总值时,我在MSDN中找到了一个kernel32函数来调用系统中的数据.MSDN以这种方式声明函数:

[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool GlobalMemoryStatusEx(ref MEMORYSTATUSEX lpBuffer);
Run Code Online (Sandbox Code Playgroud)

但这不能正常工作.我将"ref"改为"[In,Out]"然后它正常工作.怎么能告诉我C#中的[In,Out]参数是什么?

c# out-parameters

0
推荐指数
1
解决办法
4506
查看次数