1

我正在学习 SQL,但在从新的/不同的查询中调用存储过程时遇到了一些问题。

我已经建立了一个installDB.sql文件,其中创建了一些表并另外用数据填充了这些表。

此外,我还使用存储过程来添加一些功能。

例子:

CREATE PROCEDURE Add_Book
    @User CHAR(50),
    @Book CHAR(50)
    AS
INSERT INTO Relationtable(book_id, user_id, current_dato) 
    VALUES(
        (SELECT book_id FROM Books WHERE book_title = @Book),
        (SELECT user_id FROM Users WHERE user_name = @User),
         GETDATE()
    )

在此查询(选项卡)中,我可以exec执行该过程(没有问题):

exec Add_Book myUser, myBook

但是,如果我在新查询(选项卡)中尝试此命令,它就不起作用。

我希望installDB构建我的所有函数,并能够稍后从另一个查询中调用它们。

这可能吗?

4

1 回答 1

0

我们使用这种方法在我们的产品中设置和维护数据库。我们有许多单独的 SQL 脚本来安装所有必需的表、tempdb 表、视图、函数、存储过程等。稍后,当人们运行执行这些存储过程的代码时,proc 可以像正常一样执行。

如果此安装脚本在事务中运行并以 a 结束ROLLBACK或遇到错误,则安装到该点的所有内容都将失败。同样,如果安装脚本以 a 开头BEGIN TRAN,并且没有COMMIT,则 procs 还不存在。

另一种可能性是安装脚本针对与您预期不同的数据库或服务器运行。运行脚本后,您应该能够在 Microsoft SQL Management Studio 查询窗口中执行它。

于 2012-10-24T18:28:00.767 回答