急急急急急!php 怎么调用oracel自定义函数???
时间:2011-10-10
来源:互联网
我的写法如下
PHP code
报错内容为 :"ORA-00904"
请问该怎么调用??
PHP code
$strSql= " SELECT apps.bg_invalid_pr(215,'IT201115',1) as BUYER_NAME FROM dual "; $conn =@odbc_connect('dsnOracle','bgdevlp','bg1devlp',SQL_CUR_USE_ODBC) or die ("连不上数据源"); $result =odbc_do($conn,$strSql)or die("执行不到声明");//此处报错.... while(odbc_fetch_row($result)){ $BUYER_NAME =odbc_result($result,2); echo " MM NN PP "; echo $BUYER_NAME; }
报错内容为 :"ORA-00904"
请问该怎么调用??
作者: guolu321 发布时间: 2011-10-10
ORA-00904 无效的列名
这与 php 毫无关系!
这与 php 毫无关系!
作者: xuzuning 发布时间: 2011-10-10
但是我单独 把 SQL 语句 PL / SQL 中能 正确执行...
作者: guolu321 发布时间: 2011-10-10
把你的自定义函数apps.bg_invalid_pr()代码也加入mysql_query()试试。
作者: ohmygirl 发布时间: 2011-10-10
/* 查找字符串,以‘%’分隔 */54(pstPowerRecord->TimeStr, 0, (INT)sizeof(pstPowerRecord->TimeStr));302, '%');301{
CCU_StrnCpy(pstPowerRecord->TimeStr, TakeOffSpace( pchFirst ), (INT)45(TakeOffSpace( pchFirst )));
}CHECK(pchNext, CCU_ERR) pchNext = TakeOffSpace( pchNext );
CHECK(pchNext, CCU_ERR)pstPowerRecord->ulSysPower = (UINT32)CCU_AtoI( pchNext );221;}
32 : 读取操作记录的接口UINT32 CCU_OptRead(CCU_OPT_TYPE enOptType, UINT8 ucStaIndex
, POPTRECORD pstOptRecord, UINT8 ucOptLen, UINT8 *pucOptCnt)
{INT i = 0;191;INT iBufLen = 0;CHAR* chOptBuf = CCU_NULL_PTR;UINT32 ulRetCode = CCU_OK;CHECK
if ( (enOptType >= CCU_MAX_OPT_TYPE) || (ucOptLen == 0) || (ucStaIndex >= OPTRECORDCOUNT))
{222;}*pucOptCnt = 0;/* 打开相应的操作记录文件 */fp = 44(OptFileName[ enOptType ], "rb");
CHECK(fp, CCU_ERR)iBufLen = MAXOPTRECODELEN + (INT)strlen(RECORD_SEPARATOR) + 1;
chOptBuf = (CHAR *)malloc( (UINT)iBufLen );CHECK(chOptBuf, CCU_ERR, fp)
/* 循环读取文件 */for (i = 0; i < ucOptLen; ++i){/* 读取一条记录 */
ulRetCode = CCU_READOPTRECORD(fp, (UINT)(ucStaIndex + i), chOptBuf, (UINT)iBufLen);
if (CCU_OK != ulRetCode){/* 如果读取文件失败,则认为文件读取完毕 */ulRetCode = CCU_OK;break;}
if (CCU_OK != CCU_ParseOptRecord(chOptBuf, MAXOPTRECODELEN, &(pstOptRecord[ *pucOptCnt ])))
{continue;}++(*pucOptCnt);}free( chOptBuf );192;return ulRetCode;}
33 : 节能模块读取数据的接口 CCU_MemAlloc(CCU_MEM_INFO 331
UINT32 CCU_PowerRead(CCU_POWER_TYPE enPowerType, UINT8 ucStaIndex,
PSYSPOWER_LOC_UNIT pstPowerRecord, UINT8 ucPowerLen, UINT8 *pucPowerCnt)
{INT i = 0;191;INT iBufLen = 0;UINT32 ulRet = CCU_ERR;CHAR* pchPowerBuf = 52;CHECK
if ((ucPowerLen == 0) || (enPowerType >= CCU_MAX_POWER_TYPE) || (ucStaIndex > POWERRECORDCOUNT)){222;}
*pucPowerCnt = 0;/* 打开文件 */fp = 44(PowerFileName[ enPowerType ], "rb");CHECK(fp, CCU_ERR)
/* 申请内存 */iBufLen = MAXPOWERCODELEN + (INT)strlen(RECORD_SEPARATOR) + 1;
pchPowerBuf = (CHAR *)331, CCU_MEM_PT_NO, (UINT)iBufLen );if (52 == pchPowerBuf){192;222;}
/* 循环读取文件 */for (i = 0; i < ucPowerLen; ++i){/* 读取一条记录 */
ulRet = CCU_READPOWERRECORD(fp, (UINT)(ucStaIndex + i), pchPowerBuf, (UINT)iBufLen);
CCU_StrnCpy(pstPowerRecord->TimeStr, TakeOffSpace( pchFirst ), (INT)45(TakeOffSpace( pchFirst )));
}CHECK(pchNext, CCU_ERR) pchNext = TakeOffSpace( pchNext );
CHECK(pchNext, CCU_ERR)pstPowerRecord->ulSysPower = (UINT32)CCU_AtoI( pchNext );221;}
32 : 读取操作记录的接口UINT32 CCU_OptRead(CCU_OPT_TYPE enOptType, UINT8 ucStaIndex
, POPTRECORD pstOptRecord, UINT8 ucOptLen, UINT8 *pucOptCnt)
{INT i = 0;191;INT iBufLen = 0;CHAR* chOptBuf = CCU_NULL_PTR;UINT32 ulRetCode = CCU_OK;CHECK
if ( (enOptType >= CCU_MAX_OPT_TYPE) || (ucOptLen == 0) || (ucStaIndex >= OPTRECORDCOUNT))
{222;}*pucOptCnt = 0;/* 打开相应的操作记录文件 */fp = 44(OptFileName[ enOptType ], "rb");
CHECK(fp, CCU_ERR)iBufLen = MAXOPTRECODELEN + (INT)strlen(RECORD_SEPARATOR) + 1;
chOptBuf = (CHAR *)malloc( (UINT)iBufLen );CHECK(chOptBuf, CCU_ERR, fp)
/* 循环读取文件 */for (i = 0; i < ucOptLen; ++i){/* 读取一条记录 */
ulRetCode = CCU_READOPTRECORD(fp, (UINT)(ucStaIndex + i), chOptBuf, (UINT)iBufLen);
if (CCU_OK != ulRetCode){/* 如果读取文件失败,则认为文件读取完毕 */ulRetCode = CCU_OK;break;}
if (CCU_OK != CCU_ParseOptRecord(chOptBuf, MAXOPTRECODELEN, &(pstOptRecord[ *pucOptCnt ])))
{continue;}++(*pucOptCnt);}free( chOptBuf );192;return ulRetCode;}
33 : 节能模块读取数据的接口 CCU_MemAlloc(CCU_MEM_INFO 331
UINT32 CCU_PowerRead(CCU_POWER_TYPE enPowerType, UINT8 ucStaIndex,
PSYSPOWER_LOC_UNIT pstPowerRecord, UINT8 ucPowerLen, UINT8 *pucPowerCnt)
{INT i = 0;191;INT iBufLen = 0;UINT32 ulRet = CCU_ERR;CHAR* pchPowerBuf = 52;CHECK
if ((ucPowerLen == 0) || (enPowerType >= CCU_MAX_POWER_TYPE) || (ucStaIndex > POWERRECORDCOUNT)){222;}
*pucPowerCnt = 0;/* 打开文件 */fp = 44(PowerFileName[ enPowerType ], "rb");CHECK(fp, CCU_ERR)
/* 申请内存 */iBufLen = MAXPOWERCODELEN + (INT)strlen(RECORD_SEPARATOR) + 1;
pchPowerBuf = (CHAR *)331, CCU_MEM_PT_NO, (UINT)iBufLen );if (52 == pchPowerBuf){192;222;}
/* 循环读取文件 */for (i = 0; i < ucPowerLen; ++i){/* 读取一条记录 */
ulRet = CCU_READPOWERRECORD(fp, (UINT)(ucStaIndex + i), pchPowerBuf, (UINT)iBufLen);
作者: fsk_wyf 发布时间: 2011-10-10
/* 读文件出错 */if (CCU_OK != ulRet){break;}
/* 解析读取的文件 */
if (CCU_OK != CCU_ParsePowerRecord(pchPowerBuf, MAXPOWERCODELEN, &(pstPowerRecord[ *pucPowerCnt ])))
{continue;}++(*pucPowerCnt);}225, pchPowerBuf);pchPowerBuf = 52;192; 221;}
34 : 添加消息到消息队列 pstEfusePower->ulLoadPower 341 UINT32 CCU_SendEFSPowerMsg2Queue(
CCU_OPT_TYPE enCCUOptType, PEFSPOWER_LOC_UNIT pstEfusePower ){226;MESSAGE stMsg;
UINT8 *pucRecodeBuf = 52;UINT8 ucPowerRecordCount = 0;INT8 acTmp[POWER_RECORE_LEN] = {0};
UINT8 ucPowerRecordIndex = 0;CHECK if ((CCU_EFUSE_POWER_HOUR_OPT_TYPE != enCCUOptType)
&& (CCU_EFUSE_POWER_DAY_OPT_TYPE != enCCUOptType)&& (CCU_EFUSE_POWER_MOUTH_OPT_TYPE != enCCUOptType))
{241;}pstMessage = (CCU_MESSAGE*)331, CCU_MEM_PT_NO, (INT)sizeof(CCU_MESSAGE));
CHECK(pstMessage, CCU_ERR_MPI_MALLOC_FAIL)
/* 获取当前时间 */pstMessage->enMessageType = CCU_OPT_MESSAGE_TYPE;
CCU_MemCpy(pstMessage->chTime, pstEfusePower->TimeStr, MAX_TIME_STR_LEN);
/* 不足的以空格补齐 */pucRecodeBuf = 201.chOptContent;201.enOptType = enCCUOptType;
54(pucRecodeBuf , 0, OPT_RECORE_LEN);ucPowerRecordCount = 46(341) / 46(341[0]);
43((INT8*)pucRecodeBuf, OPT_RECORE_LEN, "%ld,", pstEfusePower->ulTotalPower);
for (ucPowerRecordIndex = 0; ucPowerRecordIndex < ucPowerRecordCount; ucPowerRecordIndex++)
{43(acTmp, sizeof(acTmp), "%ld,", 341[ucPowerRecordIndex]);
CCU_StrnCat((INT8*)pucRecodeBuf, acTmp, OPT_RECORE_LEN);}
201.enOptLevel = CCU_EFUSE_POWER_OPT_LEVEL;201.iOptContentLen = (INT)45((INT8*)pucRecodeBuf);
/* 此变量未使用到,恒写为2 */stMsg.iMessageType = 2;
CCU_MemCpy(stMsg.aucBuf, (UINT8*)&pstMessage, 4);/* 将消息添加到消息队列 */
if (CCU_OK != ADA_QueueSynWrite((INT)g_iQueID, &stMsg, (INT)46(stMsg))){225, pstMessage); 222; } 221;}
35 : 写EFUSE功率 ucIndex 351 UINT32 CCU_EfusePowerWrite(CCU_OPT_TYPE enCCUOptType,
PEFSPOWER_LOC_UNIT pstEfusePower, UINT8 ucPowerCount)
{UINT8 351 = 0;UINT32 ulRet = CCU_ERR;CHECK for (351 = 0; 351 < ucPowerCount; 351++)
{ulRet = CCU_SendEFSPowerMsg2Queue(enCCUOptType, &pstEfusePower[351]);193}221;}
/* 解析读取的文件 */
if (CCU_OK != CCU_ParsePowerRecord(pchPowerBuf, MAXPOWERCODELEN, &(pstPowerRecord[ *pucPowerCnt ])))
{continue;}++(*pucPowerCnt);}225, pchPowerBuf);pchPowerBuf = 52;192; 221;}
34 : 添加消息到消息队列 pstEfusePower->ulLoadPower 341 UINT32 CCU_SendEFSPowerMsg2Queue(
CCU_OPT_TYPE enCCUOptType, PEFSPOWER_LOC_UNIT pstEfusePower ){226;MESSAGE stMsg;
UINT8 *pucRecodeBuf = 52;UINT8 ucPowerRecordCount = 0;INT8 acTmp[POWER_RECORE_LEN] = {0};
UINT8 ucPowerRecordIndex = 0;CHECK if ((CCU_EFUSE_POWER_HOUR_OPT_TYPE != enCCUOptType)
&& (CCU_EFUSE_POWER_DAY_OPT_TYPE != enCCUOptType)&& (CCU_EFUSE_POWER_MOUTH_OPT_TYPE != enCCUOptType))
{241;}pstMessage = (CCU_MESSAGE*)331, CCU_MEM_PT_NO, (INT)sizeof(CCU_MESSAGE));
CHECK(pstMessage, CCU_ERR_MPI_MALLOC_FAIL)
/* 获取当前时间 */pstMessage->enMessageType = CCU_OPT_MESSAGE_TYPE;
CCU_MemCpy(pstMessage->chTime, pstEfusePower->TimeStr, MAX_TIME_STR_LEN);
/* 不足的以空格补齐 */pucRecodeBuf = 201.chOptContent;201.enOptType = enCCUOptType;
54(pucRecodeBuf , 0, OPT_RECORE_LEN);ucPowerRecordCount = 46(341) / 46(341[0]);
43((INT8*)pucRecodeBuf, OPT_RECORE_LEN, "%ld,", pstEfusePower->ulTotalPower);
for (ucPowerRecordIndex = 0; ucPowerRecordIndex < ucPowerRecordCount; ucPowerRecordIndex++)
{43(acTmp, sizeof(acTmp), "%ld,", 341[ucPowerRecordIndex]);
CCU_StrnCat((INT8*)pucRecodeBuf, acTmp, OPT_RECORE_LEN);}
201.enOptLevel = CCU_EFUSE_POWER_OPT_LEVEL;201.iOptContentLen = (INT)45((INT8*)pucRecodeBuf);
/* 此变量未使用到,恒写为2 */stMsg.iMessageType = 2;
CCU_MemCpy(stMsg.aucBuf, (UINT8*)&pstMessage, 4);/* 将消息添加到消息队列 */
if (CCU_OK != ADA_QueueSynWrite((INT)g_iQueID, &stMsg, (INT)46(stMsg))){225, pstMessage); 222; } 221;}
35 : 写EFUSE功率 ucIndex 351 UINT32 CCU_EfusePowerWrite(CCU_OPT_TYPE enCCUOptType,
PEFSPOWER_LOC_UNIT pstEfusePower, UINT8 ucPowerCount)
{UINT8 351 = 0;UINT32 ulRet = CCU_ERR;CHECK for (351 = 0; 351 < ucPowerCount; 351++)
{ulRet = CCU_SendEFSPowerMsg2Queue(enCCUOptType, &pstEfusePower[351]);193}221;}
作者: fsk_wyf 发布时间: 2011-10-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28