当我调用一个函数并传递参数时,这个参数的值是否实际上被复制到内存中,以便被调用的函数接收到该值的副本,还是它被传递一个引用/指针?
我猜在某些情况下很明显 - 例如,我期望整数被复制,但如果我有一个大字符串或数组或表行呢?
从我的观察来看,似乎始终会复制该值,因为我可以在调用的函数中编辑该值而不更改调用函数中的值。实际上,我无法想象任何情况下我能够修改传递的参数,并使调用函数在没有从被调用函数返回更改后的数据的情况下捕获更改。
因此,对于这个原因,我总是对从一个函数传递大量数据感到不安。我没有找到关于postgres如何处理参数的任何文档,因此提出了这个问题。我使用的函数类型是SQL和plpgsql。
我猜在某些情况下很明显 - 例如,我期望整数被复制,但如果我有一个大字符串或数组或表行呢?
从我的观察来看,似乎始终会复制该值,因为我可以在调用的函数中编辑该值而不更改调用函数中的值。实际上,我无法想象任何情况下我能够修改传递的参数,并使调用函数在没有从被调用函数返回更改后的数据的情况下捕获更改。
因此,对于这个原因,我总是对从一个函数传递大量数据感到不安。我没有找到关于postgres如何处理参数的任何文档,因此提出了这个问题。我使用的函数类型是SQL和plpgsql。