sql - 无法绑定(bind)多部分标识符 "dbo.showSelectedTable"

标签 sql sql-server database function

我试图创建函数来调用用户选择的表,我正在尝试制作并完成它

CREATE FUNCTION showSelectedTable(@code varchar(1)) RETURNS 
@tempEMP TABLE
(id nvarchar(9),name nvarchar(20),mdname nvarchar(20),lname nvarchar(50),   tgl datetime,adrs nvarchar(50),sex nvarchar(1),salary int,superssn nvarchar(9),dno nvarchar(3))

BEGIN

DECLARE @temp1 TABLE (id nvarchar(9),name nvarchar(30),idmgr nvarchar(9),dtime datetime)
DECLARE @temp2 TABLE (EmpName nvarchar(30),ProjectName nvarchar(30))

    if @code = 'E'
        BEGIN
        INSERT INTO @tempEMP
            SELECT *
            FROM employee
        RETURN;
        END
    ELSE IF @code = 'D'
        BEGIN           
            INSERT INTO @temp1
                SELECT *
                FROM department
            RETURN;
        END
    ELSE IF @code = 'W'
        BEGIN
            INSERT INTO @temp2
                SELECT e.fname,p.pname
                FROM works_on W,employee E,project P
                WHERE E.ssn = W.ssn AND W.pno = P.pnumber
            RETURN;
        END
    RETURN;
END

但是当尝试打电话时,

select dbo.showSelectedTable 'W'

我收到这条消息:

The multi-part identifier "dbo.showSelectedTable" could not be bound.

谁能帮我解决这个问题吗?

最佳答案

使用这个,

select * from dbo.showSelectedTable('W')

它是一个表值函数,就像对待表一样对待表值函数。

关于sql - 无法绑定(bind)多部分标识符 "dbo.showSelectedTable",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36997551/

相关文章:

php - Mysql 查询花费太多时间

sql - 从电子邮件地址获取用户名/帐户名

sql - 自动创建数据库比较脚本并执行

mysql - 是否有规范化列=行的表的快捷方式?

mysql - 访问外键指向的表中的数据

mysql 查询无法在实时服务器上运行,但可以在本地服务器上运行

mysql - JPA |循环遍历 ids 列表并更新 C

sql-server - 仅追加到 SQL Server 中的表以记录不可变事件并提高整体性能?

sql-server - 到主机的 TCP/IP 连接,端口 1433 失败

sql-server - T-SQL 中是否有替代 "IN"语句的方法?