---
source_url: https://docs.dolphindb.cn/zh/funcs/o/objByName.html
fetched_at: 2026-05-19T09:33:31Z
category: funcs
title: objByName
sha1: 44888807d37a9d9c37254854cf769656d8cc74b2
---

# objByName

## 语法

`objByName(name, [sharedVar])`

## 详情

DolphinDB 在执行脚本之前先解析脚本。解析脚本的过程是检查变量是否在本地定义。如果没有在本地定义，则抛出异常。

假设我们在本地定义一个函数，然后在远程节点上执行。这个函数会查询共享表。但是，共享表在远程节点上而不在本地节点上。如果在函数的
SQL 语句中直接调用表名，系统将不能解析脚本。

为了解决这个问题，系统函数 `objByName` 在执行时会根据名称返回对象。

如果没有指定 *sharedVar* 参数，系统首先搜索会话中的局部变量，再搜索共享变量。如果
*sharedVar* 为true，表示只搜索共享变量。如果 *sharedVar* 为false，表示只搜索局部变量。

## 参数

**name** 是一个字符串，表示表名。

**sharedVar** 是一个布尔值。

## 返回值

一个对象，与 *name* 具有相同的数据类型与形式。

## 例子

假设在本地节点上有一个表 EarningsDates，它包含两列：Ticker 和 date。主机名为localhost 服务器的
8081 端口上的远程节点有一个表 USPrices。它包含所有美国股票的每日价格。我们想要从远程节点取得 EarningsDates
表中所有股票在公布收益后一周的价格。

在远程节点，导入数据文件创建表 USPrices，然后在所有节点间共享。

```dolphindb
USPrices = loadText("c:/DolphinDB/Data/USPrices.csv")
share USPrices as sharedUSPrices;
```

在本地节点，创建表 EarningsDates，然后把表和脚本发送到远程节点。执行完成后，结果会发送回本地节点。

```dolphindb
EarningsDates=table(`XOM`AAPL`IBM as TICKER, 2006.10.26 2006.10.19 2006.10.17 as date)
def loadDailyPrice(data){
   dateDict = dict(data.TICKER, data.date)
   return select date, TICKER, PRC from objByName("sharedUSPrices") where dateDict[TICKER]<date<=dateDict[TICKER]+7
}
conn = xdb("localhost",8081)
prices = conn(loadDailyPrice, EarningsDates);

prices;
```

| date | TICKER | PRC |
| --- | --- | --- |
| 2006.10.27 | XOM | 71.46 |
| 2006.10.30 | XOM | 70.84 |
| 2006.10.31 | XOM | 71.42 |
| 2006.11.01 | XOM | 71.06 |
| 2006.11.02 | XOM | 71.19 |
| 2006.10.18 | IBM | 89.82 |
| 2006.10.19 | IBM | 89.86 |
| 2006.10.20 | IBM | 90.48 |
| 2006.10.23 | IBM | 91.56 |
| 2006.10.24 | IBM | 91.49 |
| 2006.10.20 | AAPL | 79.95 |
| 2006.10.23 | AAPL | 81.46 |
| 2006.10.24 | AAPL | 81.05 |
| 2006.10.25 | AAPL | 81.68 |
| 2006.10.26 | AAPL | 82.19 |
