当我尝试更改表的数据类型时,我从SQL Management Studion收到这条可怕的消息:"不允许保存更改.您所做的更改需要删除并重新创建以下表格".我已经尝试通过T-SQL进行修改并且它可以工作,但为什么我不能通过设计模式执行此操作?我正在使用SQL Server 2008 R2.
我正在尝试创建一个函数,我可以调用它来检查数据库中每个表的键中的下一个 ID。我知道如何做到这一点,但无法创建该函数,因为我收到此错误:
“在函数中无效使用副作用运算符‘INSERT EXEC’。”
看来我不能在函数中使用Exec。我可以通过哪些替代方案来获取此信息?
这是我的代码:
CREATE FUNCTION FCN_ProximoID()
RETURNS @TablaID Table (Tabla nvarchar(370), ID int)
AS
BEGIN
-- Fill the table variable with the rows for your result set
DECLARE @Row INT
DECLARE @Filas INT
DECLARE @MaxID INT
DECLARE @Query As varchar(max)
DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128)
SET @Filas = (SELECT MAX(Fila)
FROM (
SELECT ROW_NUMBER() OVER(ORDER BY A.TABLE_NAME) AS 'Fila',
A.TABLE_NAME As Tabla, A.COLUMN_NAME As Columna,
A.ORDINAL_POSITION As Indice, B.DATA_TYPE As TipoDato
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE A
LEFT JOIN INFORMATION_SCHEMA.COLUMNS …Run Code Online (Sandbox Code Playgroud) 我有一个简单的表,例如:
create table #test(x int, y int)
insert into #test values(null, 1)
insert into #test values(1, 1)
insert into #test values(1, 2)
insert into #test values(2, 2)
insert into #test values(3, 2)
Run Code Online (Sandbox Code Playgroud)
我需要通过分组获得总和,但如果组具有空值,则获取null而不是sum.我可以用两个查询来做到这一点:
1) select y, case when AVG(x)<>SUM(x)/COUNT(*) then null else SUM(x) end from #test
group by y
2) select y, CASE WHEN EXISTS(select * from #test innerTest where innerTest.y=outerTest.y and x is null) then null else sum(x) end
from #test outerTest group by y
Run Code Online (Sandbox Code Playgroud)
哪个查询性能更好?还有其他解决方案吗?
您好我的查询得到此错误有助于我恢复它
SELECT CompanyId, CompanyName, RegistrationNumber,
(select CompanyAddress from RPT_Company_Address where
RPT_Company_Address.CompanyId=Company.CompanyId) AS CompanyAddress,
MobileNumber, FaxNumber, CompanyEmail, CompanyWebsite, VatTinNumber
FROM Company;`
Run Code Online (Sandbox Code Playgroud) 我有以下查询:
Create View Temp2 as
(SELECT CurrentLoan.memberID, bookID, due_date
FROM CurrentLoan, Member
WHERE CurrentLoan.memberID = Member.memberID
AND Member.firstname ="John"
AND Member.lastname = "Smith");
SELECT Temp2.bookID, Book.title, Temp2.due_date
FROM Temp2, Book
WHERE Temp2.bookID = Book.bookID ;
Run Code Online (Sandbox Code Playgroud)
但是,我需要能够生成相同的结果,而无需在一个语句中使用任何视图和所有视图.有关如何设置此设置的任何建议吗?