我正在尝试创建一个使用sp_executesql的存储过程。我已经看了很长很硬的,但是我看不出我在代码中做错了什么。一般来说,我对存储过程/sql服务器函数很陌生,所以我猜我缺少一些简单的东西。存储过程变更发生得很好,但是当我尝试运行它时,我会得到一个错误。
错误上说。
Msg 1087, Level 15, State 2, Line 3
Must declare the table variable "@atableName"
手术看起来是这样的。
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE
我的场景是这样的,
CREATE PROCEDURE SP_1
AS
BEGIN
INSERT INTO #tmpTable(ID, Value)
VALUES(1, 1), (2, 2)
END
GO
CREATE PROCEDURE SP_2
AS
BEGIN
CREATE TABLE #tmpTable(ID INT, Value INT)
EXEC SP_1
SELECT * FROM #tmpTable
DROP TABLE #tmpTable
END
GO
EXEC SP_2
GO
DROP PROCEDURE SP_1
我正在通过javascript启动Sharepoint 2013工作流程,我想作为其中的一个人设置一个启动参数。 在这里我定义了我的初始化参数并启动了工作流。我对person字段使用了一个people选择器。我尝试了不同的person表示法,比如id、mail、display name、key和json对象。 var peoplePicker = SPClientPeoplePicker.SPClientPeoplePickerDict.peoplePickerDiv_TopSpan;
var keys = peoplePicker.GetAllUserKeys();
var initiat
我正在尝试创建一个具有表和参数的存储过程,并在该表上执行一些查询。
所以..。
CREATE PROCEDURE blabla
@TableName nvarchar(50)
AS
DROP TABLE @TableName -- just an example, real queries are much longer
GO
这个查询给出了不正确的语法错误。
我知道我总是可以使用sp_executesql过程,但我想要一种更简洁的方法,这样我就不需要担心构建一个无穷无尽的sql字符串。
谢谢
CREATE TABLE EAddressDetails (EAddress varchar(100) NULL))
CREATE TYPE EAddressList AS TABLE (Email VARCHAR(100)))
CREATE PROCEDURE EAddresses_InsertBatch
@EAddressBatch [EAddressList] READONLY
AS
BEGIN
INSERT INTO EAddressDetails (EAddress)
SELECT E.Email FROM @EAddressBatch E
SELECT EAddress
fro
我目前正在使用sp_executesql执行一个带有动态表名的T-SQL语句。然而,看到像这样的东西真的很难看:
set @sql = 'UPDATE '+Table_Name+' SET ... WHERE '+someVar+' = ... AND '+someVar2' = ...'
sp_executesql @sql
我更想要的是一个表变量,它是对一个表的引用,所以我可以这样做:
UPDATE TableRef SET ... WHERE ...
因为当我有非常长的T-SQL语句时,由于它在字符串中的格式,它变得非常难以
Server 2000标准,Windows 2003
我的同事从Server中删除了“BUILTIN\Administrators”组,这会导致“Server代理”无法工作。用于同步数据库的所有TSQL都停止工作。
我在服务器上拥有管理员权限,我的数据库用户处于sysadmin角色。
有没有人知道如何在不从备份恢复主数据库的情况下将'BUILTIN\Administrators‘带回来?
编辑:当我试图使用企业管理器添加管理员或MACHINENAME\时,列表中有这个组要选择,但是当我接受我的选择时,我会出错:
Error 15041: Windows NT user or group
好吧,这让我很恼火。我有一个在from子句中使用in语句创建的查询。我想要做的是用一个全局变量来填充from语句。示例
Select *
Form query1 in <Global Variable filename>
实际情况是,我链接到一个包含数百个链接表和查询的文件。我的数据库只有几个选择查询和链接表到不同的数据库。我不想重新构建所有的查询和链接表,这是我的数据库。问题是所有链接的文件名称每月更改一次。我只想读取一个文本文件,其中包含数据库的当前名称,这样我就不必在每次数据库名称更改时都更改查询。这也是一个查询,因为我有其他使用外部链接查询的查询。
在这里,我需要使用函数(存储过程)来选择列名,这个函数在使用PostgreSQL的其他数据库表中存在。
我有如下所示的sql server查询。
示例:
create procedure sp_testing
as
if not exists ( select ssn from testdb..testtable) /*ssn is the column-name of testtable which exists in testdb database */
...
问:我可以在PostgreSQL中做同样的事情吗?
我有一个数据库表,它是从包含NULL的csv文件中导入的,因此当导入它而不是空字段时,它们包含字符串值'NULL'。
CSV文件在文本编辑器中打开,可以编辑出所有的NULL,所以我尝试创建一个SQL查询来更新表的每一列。
到目前为止我有这个
Alter PROCEDURE [dbo].[sp_fixnulls]
@column nvarchar(100)
AS
BEGIN
SET NOCOUNT ON;
UPDATE my_table
SET @column=''
WHERE @column = 'NU
我有一个存储过程,它创建多个临时表,并使用它们输出一个变量。在继续之前,我想测试一下临时表中的数据。有没有办法查看我的临时表,或者至少从存储过程中输出它们,以便我可以在其他地方使用它们?
目前我有:
CREATE PROCEDURE Top10_SP_getMeasure007
(
in :division char(2),
in :startdate date,
in :enddate date,
out :QualifyingModels int
);
我在想out变量可能是临时表。
我有两个存储过程: SP1和SP2。它们都包含临时表# temp,但是两个存储过程的表结构不同。
还有第三个存储过程,即从SP1和SP2调用的SP3,它更新#Temp中的列。
SP3是这样的:
if @CallingSP = SP1
begin update #Temp
set ColumnA= 'abc'
end
if @CallingSP = SP2
begin update #Temp
set ColumnB= 'xyz'
end
现在,"ColumnA“列仅存在于SP1中,"ColumnB”列仅存在
我有一个名为Applications的表,它有一个名为StatusChangeDate的列,该列的类型是datetime。我正在尝试使用动态查询来更新StatusChangeDate。
我最初的询问如下:
DECLARE @TableName NVARCHAR(MAX) = (SELECT TOP 1 name FROM sys.Tables WHERE Name LIKE '%AuthorizedUsers_%');
DECLARE @UTCDate DATETIME = GETUTCDATE();
DECLARE @ApplicationsTableUpdateQuery