Sql Informix选择进入语法错误
我一直在尝试使用代码来查找表中的元素计数并将其存储在局部变量中。我基本上只是想检查一个记录的存在,所以如果有更简单的方法可以做到这一点 下面是一个将查询结果存储在变量()中的示例: 但是当我尝试创建自己的版本时,我得到了一个语法错误。我不知道是什么问题Sql Informix选择进入语法错误,sql,syntax,informix,Sql,Syntax,Informix,我一直在尝试使用代码来查找表中的元素计数并将其存储在局部变量中。我基本上只是想检查一个记录的存在,所以如果有更简单的方法可以做到这一点 下面是一个将查询结果存储在变量()中的示例: 但是当我尝试创建自己的版本时,我得到了一个语法错误。我不知道是什么问题 CREATE FUNCTION test () RETURNING INTEGER AS num1; DEFINE l_count INTEGER; CREATE TEMP TABLE t_queued_call
CREATE FUNCTION test ()
RETURNING INTEGER AS num1;
DEFINE l_count INTEGER;
CREATE TEMP TABLE t_queued_calls (
session_id DEC(18,0) PRIMARY KEY,
calling_number NVARCHAR(50)
) WITH NO LOG;
INSERT INTO t_queued_calls VALUES (123456, '5555555555');
SELECT COUNT(*) FROM t_queued_calls INTO l_count WHERE session_id = 123456;
DROP TABLE t_queued_calls;
END FUNCTION;
这可能与insert没有列名称有关 根据表模式调整\u列1和\u列2
INSERT INTO t_queued_calls (your_column1, your_column2) VALUES (123456, '5555555555');
SELECT COUNT(*) FROM t_queued_calls INTO l_count WHERE session_id = 123456;
和/或select中的列数与insertt中的数字和类型不匹配。。。仅选择“取消字段”,但插入两个字段
select into是一种奇怪的select格式…通常是insert into,但select NOT use into子句可能与insert没有列名称有关 根据表模式调整\u列1和\u列2
INSERT INTO t_queued_calls (your_column1, your_column2) VALUES (123456, '5555555555');
SELECT COUNT(*) FROM t_queued_calls INTO l_count WHERE session_id = 123456;
和/或select中的列数与insertt中的数字和类型不匹配。。。仅选择“取消字段”,但插入两个字段
select into是奇怪的select格式…通常是insert into,但select NOT use into子句我从这个问题中找到了正确的语法:[
我从这个问题中找到了正确的语法:[
INTO
子句在这两个函数中的位置都是错误的。INTO子句位于select列表之后(关键字select之后的表达式列表)和FROM子句之前(请参阅语句中的Informix“SQL指南:语法”手册),如下代码所示:
CREATE PROCEDURE test()
RETURNING INTEGER AS num1;
DEFINE l_count INTEGER;
CREATE TEMP TABLE t_queued_calls (
session_id DEC(18,0) PRIMARY KEY,
calling_number NVARCHAR(50)
) WITH NO LOG;
INSERT INTO t_queued_calls VALUES (123456, '5555555555');
SELECT COUNT(*) INTO l_count FROM t_queued_calls WHERE session_id = 123456;
DROP TABLE t_queued_calls;
RETURN l_count;
END PROCEDURE;
此外,问题中所示的第一个函数在子句的顺序方面也存在同样的问题。此外,它并不总是返回值,第二个函数的原始版本也从不返回值(尽管它说会返回值)在这两个函数中,
INTO
子句的位置都是错误的。INTO子句位于select列表之后(关键字select之后的表达式列表)和FROM子句之前(请参阅语句中的Informix“SQL指南:语法”手册),如下代码所示:
CREATE PROCEDURE test()
RETURNING INTEGER AS num1;
DEFINE l_count INTEGER;
CREATE TEMP TABLE t_queued_calls (
session_id DEC(18,0) PRIMARY KEY,
calling_number NVARCHAR(50)
) WITH NO LOG;
INSERT INTO t_queued_calls VALUES (123456, '5555555555');
SELECT COUNT(*) INTO l_count FROM t_queued_calls WHERE session_id = 123456;
DROP TABLE t_queued_calls;
RETURN l_count;
END PROCEDURE;
此外,问题中所示的第一个函数在子句的顺序方面也有相同的问题。此外,它并不总是返回值,第二个函数的原始版本也从不返回值(尽管它说会返回值)。请显示错误消息错误不具体。“SQL错误(-201):发生语法错误。“但我已一次删除了第1行,并将其缩小到SELECT语句。我已发布了一些建议,希望可以重新使用。请显示错误消息。错误不具体。“SQL错误(-201):发生语法错误。”但我一次删除了第1行,并将其缩小到SELECT语句。我发布了一些建议,希望在编写“嵌入式SQL”(存储过程语言SPL是其变体)时可以重复使用,则INTO子句指定要存储/接收查询每行结果的主机变量。在此上下文中,INTO子句位于select列表之后,FROM子句之前。当您编码“嵌入式SQL”(哪种存储过程语言SPL是的变体)时,则INTO子句指定用于存储/接收查询每行结果的主机变量。在此上下文中,INTO子句位于select列表之后,FROM子句之前。