真正简单的sybase sql函数无法工作
我想知道为什么这个简单的sql函数不能工作真正简单的sybase sql函数无法工作,sql,tsql,sybase,sql-function,Sql,Tsql,Sybase,Sql Function,我想知道为什么这个简单的sql函数不能工作 CREATE FUNCTION dbo.getTableCounts (@STREAM_ID nvarchar(10)) RETURNS table AS RETURN ( select 1 as 'one', 2 as 'two'); 在qwerybuilder中运行时,会收到两条错误消息: Incorrect syntax near the keyword 'table' (for line 2) 及 我不明白这怎么是不正确的语法。有人知道这是
CREATE FUNCTION dbo.getTableCounts (@STREAM_ID nvarchar(10))
RETURNS table
AS RETURN ( select 1 as 'one', 2 as 'two');
在qwerybuilder中运行时,会收到两条错误消息:
Incorrect syntax near the keyword 'table' (for line 2)
及
我不明白这怎么是不正确的语法。有人知道这是错误的原因吗?根据ASE,您只能返回标量表达式:
create function [ owner_name. ] function_name
[ ( @parameter_name [as] parameter_datatype [ = default ]
[ ,...n ] ) ]
returns return_datatype
[ with recompile]
as
[begin]
function_body
return scalar_expression
[end]
因此不能将表用作数据类型。根据ASE,只能返回标量表达式:
create function [ owner_name. ] function_name
[ ( @parameter_name [as] parameter_datatype [ = default ]
[ ,...n ] ) ]
returns return_datatype
[ with recompile]
as
[begin]
function_body
return scalar_expression
[end]
因此不能将表用作数据类型。与Microsoft SQL Server不同,在Sybase中,如果需要将表用作结果类型,则不使用函数,而是使用存储过程。在您的情况下,使用Watcom SQL编写的过程的定义如下所示:
CREATE PROCEDURE getTableCounts(@STREAM_ID NVARCHAR(10))
RESULT(one INT, two INT)
BEGIN
SELECT 1 AS one, 2 AS two;
END;
但是,Sybase中的Transact-SQL方言不支持此选项。与Microsoft SQL Server不同,在Sybase中,如果需要将表作为结果类型,则不使用函数而是使用存储过程。在您的情况下,使用Watcom SQL编写的过程的定义如下所示:
CREATE PROCEDURE getTableCounts(@STREAM_ID NVARCHAR(10))
RESULT(one INT, two INT)
BEGIN
SELECT 1 AS one, 2 AS two;
END;
但是,Sybase中的Transact-SQL方言不支持此选项