我有这个功能get_department。函数内部有一个函数调用get_po_amount.
该get_po_amount函数不再存在,因此当我尝试创建 Main 函数时get_Department,出现错误“对象名称 get_po_amount 无效”。
有什么方法可以通过不在内部创建函数来创建该函数。
我也有同样的观点问题。在另一个视图中调用一个视图。
我创建这些函数只是为了展示一个示例,我需要在大型数据库上执行此操作。
CREATE FUNCTION [dbo].[GET_DEPARTEMNET]
(
@DEPTNO NVARCHAR(100)
)
RETURNS TABLE
AS
RETURN
(
SELECT * FROM [dbo].[dept] WHERE DEPTNO=(SELECT [dbo].[GET_PO_AMOUNT](@DEPTNO)))
GO
Run Code Online (Sandbox Code Playgroud) 我有这张表,有 3 条记录。3条记录是创建脚本。我需要执行创建脚本,如果发生208错误,那么我需要保留记录并将状态设置为1。然后在其他记录完成后再次执行它。如果没有错误或者有除 208 之外的任何其他错误,我需要从表中删除它。但是当我执行它时,它会无限循环。我该如何解决?
问题是第二个视图参考了第一个视图。所以我需要先创建第二个,然后创建第一个。这就是我创建这个 SP 的原因。任何其他想法也表示赞赏。我是编码新手,所以请原谅我犯的任何错误。
Create PROCEDURE [dbo].[UP_CREATE_SCRIPT]
AS
BEGIN
declare @qry1 nvarchar(max)
DECLARE @i INT =1
DECLARE @qry2 NVARCHAR(100)
IF EXISTS (select 1 from [SmartMigrateDB_New].dbo.temp3 where id>0 and type<>'sq')
BEGIN
truncate table error_log
while (select count(1) from [SmartMigrateDB_New].dbo.temp3 where status=1)>=0
BEGIN
WHILE @i <= (SELECT MAX(ID) FROM [SmartMigrateDB_New].dbo.temp3)
BEGIN
BEGIN TRY
set @qry1 = ( select code from [SmartMigrateDB_New].dbo.temp3 where id = @i )
print @qry1
EXEC sp_ExecuteSQL @qry1
update [SmartMigrateDB_New].dbo.temp3 set status=0 where id = …Run Code Online (Sandbox Code Playgroud) sql-server stored-procedures functions errors query-performance