Mysql:不允许从函数返回结果集

2024-01-10

我写了一个函数但收到此错误不允许从函数返回结果集

DELIMITER $$

CREATE FUNCTION getTestFunction
(
    p_ParentID int,
    p_ListName nvarchar(50),
    p_Type nvarchar(50),
    p_Count int 
)
RETURNS nvarchar(2000)
BEGIN
    DECLARE p_KeyValue nvarchar(2000);
    DECLARE p_ListValue nvarchar(2000);
    DECLARE p_TextValue nvarchar(2000);
    DECLARE p_ReturnValue nvarchar(2000);
    DECLARE p_Key nvarchar(2000);
    
    IF p_ParentID = 0 THEN
        IF p_Count = 0 THEN
            SET p_ReturnValue = '';
        ELSE
            SET p_ReturnValue = p_ListName;
        END IF;
    ELSE
    
            SELECT  p_KeyValue = ListName + '.' + Value
                
                FROM ListsTable
                WHERE EntryID = p_ParentID  LIMIT 1 ;
    RETURN p_ReturnValue;
            If p_Type = 'ParentKey' Or (p_Type = 'ParentList' AND p_Count > 0) THEN
                SET p_ReturnValue = p_KeyValue;
            ELSE 
                IF p_Type = 'ParentList' THEN
                    SET p_ReturnValue = p_ListValue;
                ELSE
                    SET p_ReturnValue = p_TextValue;
                END IF;
            END IF;

            IF p_Count > 0 THEN
                If p_Count = 1 AND p_Type = 'ParentList' THEN
                    SET p_ReturnValue = p_ReturnValue + ':' + p_ListName;
                ELSE
                    SET p_ReturnValue = p_ReturnValue + '.' + p_ListName;
                END IF;
            END IF;
        
    END IF; 
    RETURN p_ReturnValue;
END$$
DELIMITER ;

您想将查询结果分配给变量,但实际上您只是selecting。这就是MySQL 抱怨的原因。

你必须改变这个

            SELECT  p_KeyValue = ListName + '.' + Value
            FROM ListsTable
            WHERE EntryID = p_ParentID  LIMIT 1 ;

to

            SELECT CONCAT(ListName, '.', `Value`)
            INTO p_KeyValue
            FROM ListsTable
            WHERE EntryID = p_ParentID  LIMIT 1 ;

你应该添加一个ORDER BY. A LIMIT没有ORDER BY没有意义,因为关系数据库中没有保证顺序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql:不允许从函数返回结果集 的相关文章

  • MySQL 获取时间优化

    o我有一个包含 200 万个寄存器的表 但它很快就会增长得更多 基本上 该表包含具有相应描述符的图像的兴趣点 当我尝试执行选择在空间上靠近查询点的点的查询时 总执行时间花费太长 更准确地说 持续时间 获取 0 484 秒 27 441 秒
  • 更新\插入数据从grafana到mysql

    可以从grafana更新数据或插入数据到mysql 我需要使用 UI 在 mysql 中插入 更新信息 现在我已经在使用grafana 所以想知道是否有任何方法可以使用grafana来更新或插入信息 没有用于获取用户输入并将该数据插入 My
  • 每个搜索词显示一行,如果未找到则替换默认值

    Query SELECT product id name FROM product WHERE barcode in 681027 8901030349379 679046 679047 679082 679228 679230 67923
  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • MySQL中如何存储小数?

    我尝试过将 DECIMAL 与 2 2 一起使用 但它不允许我使用它 我只想存储一个数字 例如 7 50 或 10 50 我需要将这两个数字保留在小数点后 但是当我刷新数据库时 它会将值重置为 0 99 有什么建议么 第一个参数DECIMA
  • #1115 - 未知字符集:'utf8mb4'

    我的电脑上运行着一个本地网络服务器 用于本地开发 我现在正处于导出数据库并导入到我的托管 VPS 的阶段 导出然后导入时出现以下错误 1115 未知字符集 utf8mb4 有人能指出我正确的方向吗 该错误明确表明您没有utf8mb4您的阶段
  • Laravel:使用 Faker 播种多个独特的列

    介绍 怎么样 伙计们 我有一个关于模型工厂和多个独特列的问题 背景 我有一个名为 Image 的模型 该模型将语言支持存储在单独的模型中 图片文字 图片文字 has an image id栏 语言栏和文本栏 图片文字有一个约束MySQL那个
  • 显示一个表中的所有记录以及另一表中的匹配记录

    您好 我有一张下表 其中记录了活动和积分 Activites A ID Site ActivityValue ActivityName 1 site1 7 ActivityName1 2 site1 6 ActivityName2 2 si
  • 如何检查 $row['column_name'] 是否返回空 php mysql

    我有一个带有列的表格 id name phone describe 当我从这个表中获取值时 我正在使用 row mysql fetch array query 现在我想检查是否 row describe 返回空值 如何查看php 您可以使用
  • Python 的 mysqldb 晦涩文档

    Python 模块 mysqldb 中有许多转义函数 我不理解它们的文档 而且我努力查找它们也没有发现任何结果 gt gt gt print mysql escape doc escape obj dict escape any speci
  • 退出 PHP 脚本后终止或停止 MySQL 查询

    我在工作中运行一个统计服务器 由于运行的查询量很大 该服务器有时会变得非常慢 我们的营销团队使用它作为主要统计工具 团队中的某些人有时会在脚本结束之前退出脚本 通过关闭浏览器或选项卡 同时 SQL 查询继续执行 当有人关闭或离开 PHP 脚
  • 如何使用 dql 从数据表中获取唯一值?

    我有一个表 其中有一列存储了各种值 我想使用 dql 从该表中检索唯一值 Doctrine Query create gt select rec school gt from Records rec gt where rec city ci
  • 如何获取knex / mysql中所有更新记录的列表

    这是我正在处理的查询 return knex table returning id where boolean false andWhere fooID foo id update boolean true limit num then f
  • 我应该如何审核 MySQL 表中的更改(使用 MySQL 4)?

    我被要求审核 MySQL 表中的任何 所有更改 有谁知道有什么工具可以帮助我做到这一点 还是我需要编写自己的解决方案 如果我编写自己的审计 我最初的想法是制作一个单独的表并在 PHP 代码中构建一系列更改 类似 fieldname1 gt
  • 在shell命令行中创建mysql触发器

    我需要在命令行中创建一个mysql触发器 这个sql在mysql控制台中运行良好 sql USE DB1 DROP TRIGGER IF EXISTS my trigger DELIMITER CREATE TRIGGER my trigg
  • MySQL:“您的 SQL 语法错误...靠近键...”? [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我发现了一个非常酷的用于丢失密码的脚本 但是这一行给我带来了问题 r mysql query INSERT INTO keys u
  • 如何比较行内的重叠值?

    我似乎对这个 SQL 查询有问题 SELECT FROM appts WHERE timeStart gt timeStart AND timeEnd lt timeEnd AND dayappt boatdate 时间格式为军用时间 物流
  • MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

    我正在实施 Google OAuth 2 0 并注意到 Google OAuth 返回的唯一用户 ID 是21位数字长的 我想大整数 20 足以满足这种需求 但我现在看到 Google OAuth 返回的用户 ID 的长度感到困惑 关于我应

随机推荐

  • 在此服务器上找不到请求的 URL /ProjectName/users。拉维尔

    我正在关注 laravel 的快速入门 它说 type users 但不为我工作 我在浏览器中写了 http DomainServer ProjectName users它抛出 在此服务器上找不到请求的 URL ProjectName us
  • 从作为几个局部变量之一的 JTextField 获取数据

    所以我正在读取一个文件 并获取该文件中的行数 基于此我生成了我的界面 现在我需要能够通过 UI 编辑值 Rows 是具有输入文档行数的变量 当然 下面的代码不起作用 我想将新值写入我从中读取的数组 for int i 0 i
  • 如何监听 1200 个设备 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在使用德尔福 我有一个设备 设备
  • bash 中的三单引号是什么意思?

    我在 bash 中见过很多单引号和双引号以及反引号的用法 但从未见过接下来的内容 下面的文字记录是什么意思 它似乎表明 bash 认为三重单引号是有意义的 并且进一步似乎表明这个东西中的单引号也有特殊的含义 可以进行插值 我没有找到这方面的
  • 如何在 VSCode 中使用 Flake8?

    我的 VSCode 使用本地安装的 anaconda 环境 位于默认目录 将其放置在 Program Files 中 因此 我无法通过 VSCode 安装 flake8 出现权限错误 如果我在本地更新 conda 环境来安装 flake8
  • Windows 调度程序不执行批处理脚本,但脚本在命令行中运行良好

    我想创建以今天的日期作为文件夹名称的文件夹 然后 我想将数据从远程计算机移动到新创建的文件夹 我写了一个批处理脚本 看起来像 我的批处理脚本 名称 运行 bat ECHO off SET CurrentDate date 4 4 date
  • 为什么在 Xcode 11 上,UICollectionViewCell 一旦滚动就会改变大小(我已经在 sizeForItem AtIndexPath 中设置了大小:)?

    我在表视图单元格中有集合视图 我使用笔尖作为我的集合视图单元格 其中我对图像视图和标签使用自动布局 并且它处于自由格式模式 我在 tableviewcell 类中设置单元格大小 该类通过以下方法处理其中的 collectionview 委托
  • 根据一列从表中删除重复行

    我创建了一个包含 4 个表的多个内部联接的表 但结果返回了重复的记录 这是我正在使用的代码 SELECT tblLoadStop LoadID tblCustomer CustomerID tblLoadMaster BillingID t
  • Spinner 项目的自定义布局

    我在警报对话框中有一个微调器 我想减少微调项目之间的填充 因此我实现了以下内容 spinner row xml
  • Javascript 使用 Genie 效果最小化

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我想最小化
  • 地图函数返回的列表在使用一次后消失[重复]

    这个问题在这里已经有答案了 我是Python新手 我正在使用 Python 3 3 2 我很难弄清楚为什么以下代码会给我一个错误 strList 1 2 3 intList map int strList largest max intLi
  • MVC4 - 有没有办法将根路由到“正常”未处理的 html 页面?

    我有一个 MVC4 应用程序 但我主要将它用于 WebAPI 部分 我想要一个 普通的旧 HTML 文件发送回用户 然后将使用 KnockoutJS 或 KendoUI 从 webapi 控制器中提取 JSON 我知道我可以这样做 rout
  • Java 可以用来确定下载的持续时间吗?

    只是问一下 你会如何做这件事 我知道有一些方法可以获取总体百分比来通知用户下载进度 但我不知道如何在一段时间内执行类似的操作 例如 下载完成所需时间 5 分钟 我所知道的就是百分比 写出写入的字节 然后将其除以长度 然后将其转换为百分比 如
  • android 服务 onBind SecurityException

    我不知道为什么但是在一些设备我的服务不允许绑定 java lang RuntimeException Unable to create application mypackage MyApplication java lang Securi
  • Ruby NET::HTTP 在正文之前读取标头(没有 HEAD 请求)?

    我使用 Net HTTP 和 Ruby 来抓取 URL 我不想抓取流音频 例如 http listen2 openstream co 334 http listen2 openstream co 334 事实上我只想抓取Html内容 所以没
  • Apache mod-auth-mysql 与 phpass 加密密码 (Wordpress)

    我需要对 WordPress 主站点之外的某些网页进行密码保护 用户更愿意使用他们在 WordPress 中已有的用户名和密码 显而易见的解决方案似乎是使用 Apace 模块进行基于 Mysql 的身份验证 mod auth mysql 然
  • HTML 输入数字步骤无需验证

    在 HTML 中 您可以添加step属性为数字类型的输入 我想要这个是因为我喜欢它如何通过仅按向上 向下键来简化用户的输入 我发现此属性的另一个功能是 它强制用户停留在该间隔内 HTML 通过验证来实现这一点 您可以手动输入任何值 但它不会
  • jQuery 选择器中的通配符

    我正在尝试使用通配符来获取 id 以 jander 开头的所有元素的 id 我试过 jander jander 但它不起作用 我知道我可以使用元素的类来解决它 但也可以使用通配符 div div div div 要获取所有以 jander
  • achartengine x 轴标签与值相比发生偏移

    我注意到我的时间表的 Xlabel 与 X 不同步 价值观 这些点应该位于标签的正上方 在左侧 可以 但是它向右移动 我不知道如何解决这个问题 我得到什么 http tinypic com r 2uqj905 7 http tinypic
  • Mysql:不允许从函数返回结果集

    我写了一个函数但收到此错误不允许从函数返回结果集 DELIMITER CREATE FUNCTION getTestFunction p ParentID int p ListName nvarchar 50 p Type nvarchar